SQLで使用できる記号についてまとめています。
SQLの記号とサンプルコード
+(プラス)、-(マイナス)、*(アスタリスク)、/(スラッシュ)
これらは、四則演算をおこなう際に使う記号です。*(アスタリスク)は掛け算、/(スラッシュ)は割り算になります。
mysql> select 1+1; +-----+ | 1+1 | +-----+ | 2 | +-----+ 1 row in set (0.00 sec) mysql> select 10-7; +------+ | 10-7 | +------+ | 3 | +------+ 1 row in set (0.00 sec) mysql> select 5*5; +-----+ | 5*5 | +-----+ | 25 | +-----+ 1 row in set (0.00 sec) mysql> select 20/3; +--------+ | 20/3 | +--------+ | 6.6667 | +--------+ 1 row in set (0.00 sec)
【関連記事】
▶SQLの演算子を使って計算や値の比較をする
=(イコール)、<、>(不等号)
イコールや不等号は、主にwhere句の条件式で使用します。下記のサンプルコードは、条件式が真のときのみtrueを表示します。
mysql> select "true" where 1=1; +------+ | true | +------+ | true | +------+ 1 row in set (0.00 sec) mysql> select "true" where 1!=1; Empty set (0.00 sec) mysql> select "true" where 1=1; +------+ | true | +------+ | true | +------+ 1 row in set (0.00 sec) mysql> select "true" where 1=0; Empty set (0.00 sec) mysql> select "true" where 1>0; +------+ | true | +------+ | true | +------+ 1 row in set (0.01 sec) mysql> select "true" where 1<0; Empty set (0.00 sec)
!(エクスクラメーションマーク)
!(エクスクラメーションマーク、またはビックリマーク)は、notあるいは否定の意味で使用します。
mysql> select "true" where 1 != 0; +------+ | true | +------+ | true | +------+ 1 row in set (0.00 sec) mysql> select "true" where 1 != 1; Empty set (0.00 sec)
%(パーセント)、_(アンダースコア)
%(パーセント)、_(アンダースコア、アンダーバー)はlike条件式のワイルドカードとして使用します。
mysql> select "true" where "test" like '%e%'; +------+ | true | +------+ | true | +------+ 1 row in set (0.00 sec) mysql> select "true" where "test" like '%d%'; Empty set (0.00 sec) mysql> select "true" where "test" like 'tes_'; +------+ | true | +------+ | true | +------+ 1 row in set (0.00 sec) mysql> select "true" where "test" like '%s_'; +------+ | true | +------+ | true | +------+ 1 row in set (0.00 sec)
【関連記事】
▶SQLのワイルドカードは、like句にマッチング文字列を指定
@(アットマーク)
@(アットマーク)は、SQL内またはストアドプロシジャ内での変数を表すために使います。下記は、@v1という変数に値を設定し、格納された値を格納するサンプルです。変数を使った四則演算や関数に引数として渡すことも可能です。
mysql> set @v1=100; Query OK, 0 rows affected (0.00 sec) mysql> select @v1; +------+ | @v1 | +------+ | 100 | +------+ 1 row in set (0.00 sec) mysql> select @v1+200; +---------+ | @v1+200 | +---------+ | 300 | +---------+ 1 row in set (0.00 sec)
\(バックスラッシュ/円マーク)
\(バックスラッシュ、円マーク)は、文字のエスケープに使います。ダブルクォーテーション内でダブルクォーテーションを使う場合や、タブ文字(\t)、開業(\n)を表す際に使用します。
mysql> select "\""; +---+ | " | +---+ | " | +---+ 1 row in set (0.00 sec) mysql> select "\t"; +---+ | | +---+ | | +---+ 1 row in set (0.00 sec) mysql> select "a\tb"; +-----+ | a b | +-----+ | a b | +-----+ 1 row in set (0.00 sec) mysql> select "a\nb"; +-----+ | a b | +-----+ | a b | +-----+ 1 row in set (0.00 sec)
&(アンパッサンド)/ |(パイプライン)/^(キャレット)/~(チルダ)/<<、>>(不等号2つ)
これらは、ビット演算をおこなう際に使用します。
&(アンパッサンド)は論理積、|(パイプライン)は論理和、^(キャレット)は、排他的論理和、~(チルダ)はビット反転、<<、>>(不等号2つ)は、ビットシフトをあらわします。
ysql> select 1 & 1; +-------+ | 1 & 1 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec) mysql> select 1 | 1; +-------+ | 1 | 1 | +-------+ | 1 | +-------+ 1 row in set (0.00 sec) mysql> select 1 ^ 1; +-------+ | 1 ^ 1 | +-------+ | 0 | +-------+ 1 row in set (0.00 sec) mysql> select ~ 1; +----------------------+ | ~ 1 | +----------------------+ | 18446744073709551614 | +----------------------+ 1 row in set (0.00 sec) mysql> select 1 << 1; +--------+ | 1 << 1 | +--------+ | 2 | +--------+ 1 row in set (0.00 sec) mysql> select 1 << 2; +--------+ | 1 << 2 | +--------+ | 4 | +--------+ 1 row in set (0.00 sec) mysql> select 1 << 4; +--------+ | 1 << 4 | +--------+ | 16 | +--------+ 1 row in set (0.00 sec) mysql> select 16 >> 2; +---------+ | 16 >> 2 | +---------+ | 4 | +---------+ 1 row in set (0.00 sec)
まとめ
- +(プラス)、-(マイナス)、*(アスタリスク)、/(スラッシュ)は四則演算
- =(イコール)、<、>(不等号)は条件式
- !(エクスクラメーションマーク)は否定
- %(パーセント)、_(アンダースコア)は、あいまい検索のワイルドカード
- @(アットマーク)は、変数
- \(バックスラッシュ/円マーク)はエスケープ文字
- &(アンパッサンド)/ |(パイプライン)/^(キャレット)/~(チルダ)/<<、>>(不等号2つ)はビット演算