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キーワードを組み合わせる方法があります。
-
MySQLでデータベース内のテーブル数を表示するクエリの書き方
INFORMATION_SCHEMA.TABLESを使ってテーブル数を取得するここでは例として、「WEB」というデータベースを使用しているものとします。このデータベース内に存在するテーブルの総数を調べたい場合、MySQLではINFORMATION_SCHEMA.TABLESを利用するのが便利です。INFORMATION_SCHEMAは、MySQLサーバーが管理しているメタデータ(データベース名、テーブル名、カラム情報など)を格納する仮想データベースであり、これを参照することでスキーマに関する情報をSQLで簡単に取得できます。テーブル数を表示するクエリ「WEB」データベース内のテーブル数を表示す
-
MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?
MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970 (