MySQLのLIKE演算子と等号(=)演算子の重要な違いとは?
MySQLでは、SELECTコマンドを使ってテーブルからデータを取得できます。さらに、WHERE句という条件節を組み合わせることで、必要なレコードだけを絞り込んで選択することも可能です。
等号(=)を使ったWHERE句は、完全一致で検索したい場合に適しています。例えば「tutorial_author = 'Sanjay'」のような条件です。しかし、「tutorial_author」に「jay」という文字列が含まれるすべての結果を抽出したいといった、部分一致での検索が必要になるケースもあります。こうした場合には、WHERE句とMySQLのLIKE演算子を組み合わせて使用します。
なお、LIKE演算子をワイルドカード文字なしで使用した場合、その動作はWHERE句と等号(=)を組み合わせた場合とほぼ同じになります。
例
mysql> Select * from Student Where Name LIKE 'Harshit'; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | +------+---------+---------+----------+--------------------+ 1 row in set (0.00 sec) mysql> Select * from Student Where Name = 'Harshit'; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | +------+---------+---------+----------+--------------------+ 1 row in set (0.00 sec)
ワイルドカード文字(% と _)を使用できるかどうかという違いのほかに、LIKE演算子と=演算子の間には重要な違いがもう一つ存在します。それは、LIKE演算子は末尾の空白(トレーリングスペース)を無視しないのに対し、=演算子は末尾の空白を無視するという点です。
例
mysql> Select * from Student Where Name = 'Harshit '; +------+---------+---------+----------+--------------------+ | Id | Name | Address | Subject | year_of_admission | +------+---------+---------+----------+--------------------+ | 15 | Harshit | Delhi | Commerce | 2009 | +------+---------+---------+----------+--------------------+ 1 row in set (0.00 sec) mysql> Select * from Student Where Name LIKE 'Harshit '; Empty set (0.00 sec)
上記の例のように、=演算子では名前の末尾に余分な空白があっても「Harshit」に一致しますが、LIKE演算子では空白まで厳密に比較されるため、結果は空(Empty set)となります。この挙動の違いを理解しておくことは、意図しない検索結果の不一致を防ぐために非常に重要です。
-
MySQLで行を取得する際のAND演算子とOR演算子の違いとは?
MySQLにおけるAND演算子とOR演算子の違いANDとORの違いは次の通りです。ANDは、指定された両方の条件がすべて真(true)でなければ、全体の条件が真になりません。一方、ORは、どちらか一方の条件が真であれば、全体の条件が真になります。サンプルテーブルの作成まず、以下のコマンドでテーブルを作成しましょう。mysql> create table demo70-> (-> id int not null auto_increment primary key,-> name varchar(20),-> age int-> );Query OK, 0 r
-
Pythonの「!=」演算子と「<>」演算子の違いをわかりやすく解説
Pythonには、2つの値が等しくないかどうかを判定するための比較演算子として、かつて「!=」と「<>」の2種類が存在していました。一見似ているこの2つの演算子ですが、Pythonのバージョンによって扱いが大きく異なります。本記事では、それぞれの違いと注意点を解説します。 Python 2.xでは両方の演算子が使用可能 Python 2.xでは、「!=」と「<>」のどちらの演算子も使用できます。どちらも動作はまったく同じで、2つのオペランド(被演算子)が等しくない場合にTrueを返し、等しい場合にはFalseを返します。 >>> 1 != 2 True >>&g