MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLのNOT LIKEの正しい構文と使い方を実例付きで解説

MySQLにおけるNOT LIKEの正しい構文

MySQLで特定のパターンに一致しないテーブル名やレコードを抽出したい場合には、NOT LIKE句を使用します。基本的な構文は以下の通りです。

SHOW TABLES WHERE `Tables_in_データベース名` NOT LIKE 'テーブル名%';

この構文では、指定した文字列パターンに一致しないテーブルだけが結果として表示されます。ワイルドカード「%」は任意の文字列を表すため、たとえば「insert%」と指定すれば、「insert」で始まるテーブル以外がすべて抽出されます。

実際に動作を確認してみよう

ここからは、サンプルデータベース「SAMPLE」を使って、NOT LIKEの具体的な使い方を順番に確認していきます。

ステップ1:データベースを切り替える

まず、USEコマンドで操作対象のデータベースをSAMPLEに切り替えます。

mysql> USE SAMPLE;
Database changed

ステップ2:すべてのテーブルを表示する

次に、データベース内の全テーブルを一覧表示します。

mysql> SHOW TABLES;

実行結果は以下のようになります。

+--------------------------+
| Tables_in_sample         |
+--------------------------+
| blobsizedemo             |
| insert_prevent           |
| insertrecord_selecttable |
| insertrecordprevent      |
| mytable                  |
| newlinedemo              |
| notequaloperator         |
| sumofeverydistinct       |
| yourtable                |
+--------------------------+
9 rows in set (0.00 sec)

SAMPLEデータベースには合計9個のテーブルが存在することがわかります。

ステップ3:NOT LIKEでテーブルを絞り込む

それでは、先ほどのNOT LIKE構文を使って、「insert」という文字列で始まるテーブルを除外して表示してみましょう。

mysql> SHOW TABLES WHERE `Tables_in_sample` NOT LIKE 'insert%';

実行結果は次の通りです。

+--------------------+
| Tables_in_sample   |
+--------------------+
| blobsizedemo       |
| mytable            |
| newlinedemo        |
| notequaloperator   |
| sumofeverydistinct |
| yourtable          |
+--------------------+
6 rows in set (0.00 sec)

実行結果のポイント

元々9個あったテーブルのうち、「insert_prevent」「insertrecord_selecttable」「insertrecordprevent」の3つが除外され、残りの6個のテーブルのみが表示されました。このように、NOT LIKEを使えばパターンに一致しない対象だけを簡単にフィルタリングできます。

なお、WHERE句で参照するカラム名「Tables_in_sample」は、バッククォート(`)で囲むのが安全です。また、LIKE・NOT LIKEは大文字小文字を区別しない照合順序(collation)が既定となっている点にも注意してください。大文字小文字を厳密に区別したい場合は、BINARYキーワードを組み合わせる方法があります。

  1. MySQLでデータベース内のテーブル数を表示するクエリの書き方

    INFORMATION_SCHEMA.TABLESを使ってテーブル数を取得するここでは例として、「WEB」というデータベースを使用しているものとします。このデータベース内に存在するテーブルの総数を調べたい場合、MySQLではINFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、MySQLサーバーが管理しているメタデータ(データベース名、テーブル名、カラム情報など)を格納する仮想データベースであり、これを参照することでスキーマに関する情報をSQLで簡単に取得できます。テーブル数を表示するクエリ「WEB」データベース内のテーブル数を表示す

  2. MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?

    MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970     (