17/05/07

mysqlの比較演算子について


 

比較演算子とは2つ値を等しい、大なりなどいったように比較します。
今回はWHERE句で利用していきます。

環境

create table Peoples(id integer, name varchar(100), age int);
insert into Peoples(id, name, age) values(1, "田中" , 10),(2, "佐藤",20),(3,"加藤", 30);

比較関数

よく使う比較関数を以下にまとめると、

名前 意味
= 等しい
<=> NULL対応の等しい
<> 等しくない
!= 等しくない
> 右より多い
>= 右以上
< 右より少ない
<=  右以下

などがあります。
次に、よく使う演算子を以下にまとめていきます。

BETWEEN演算子

カラムの値が任意の範囲に含まれているか調べる演算子です。
書式は以下になります。

where col_name [NOT] BETWEEN min AND max

 

カラムの値が任意の範囲であれば 1 を返し、
それ以外は 0 を返します。

 

では実際に動かしてみます。
今回は20歳以上、40歳以下の人を取得してみます。

select * from Peoples 
where age between 20 and 40;

IN

カラムの値がINの中の値と一致するものがあるのか調べる演算子です。
書式は以下になります。

WHERE col_name [NOT] IN (value,...)

 

カラムの値がカッコ内のリストのどれかと等しい場合は 1
それ以外は0を返します。

 

では実際に動かしてみます。
今回は田中と加藤という名前の人を取得します。

select * from Peoples 
where name in ("田中","加藤");

カラムの値がNULLの場合はNULLを返します。
リストに一致が見つからない場合やリストの式のいずれかが NULL である場合にも、IN は NULL を返します。

LIKE

カラムの値をパターンマッチングする演算子です。
書式は以下になります。

WHERE col_name [NOT] LIKE pattern

 

カラムの値がマッチすれば 1 を返し、
それ以外は 0 を返します。

 

LIKEでは、パターンで次のワイルドカードを使用できます。

文字 説明
% 任意の0以上の文字列
_ 任意の1文字

ワイルドカード文字をパターンとして利用するには
エスケープ文字を指定します。

文字 説明
\% 1つの「%」文字に一致します
\_ 1つの「_」文字に一致します

では実際に動かしてみます。
今回は藤という名前の入ってる人を取得します。

select * from Peoples 
where name like '%藤%';

カラムの値、もしくはパターンがNULLの場合はNULLを返します。

BINARY演算子

デフォルトでは大文字と小文字を区別しないので、
区別を行いたい場合はBINARY演算子をしてします。
書式は以下になります。

WHERE col_name LIKE BINARY pattern

ソースコード

 

以上です。

 

参考記事
データの取得 – MySQLの使い方
MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.5.1 文字列比較関数

スポンサーリンク

メールアドレスが公開されることはありません。

youya66

だらけとびびり、それとちょっぴりのてきとーさ。

コアラになってだらだらしながら愛されたい。