演算子

・テーブルとは無関係な情報のみの場合は、SELECTのFROM以降は省略できる。
・\tメタコマンドによって出力形式を切り替えることができる。今回は、列名・行数などを表示しないようにしておく。

算術演算子

演算子意味
+加算
-減算
*乗算
/除算
%剰余
oddtbs=> select 10 + 4;
       14

数値、演算子(+, -, *, /, %)を様々に変更して実行。

キャスト

データ::型
または
CAST(データ AS 型)
oddtbs=> select 10 / 4;
        2
oddtbs=> select 10::float / 4;
      2.5
oddtbs=> select cast(10 as float) / 4;
      2.5

文字列連結子

oddtbs=> select 'abc' || 'def';
 abcdef
oddtbs=> select 10 || 'def';
 10def

LIKE

文字列 LIKE パターン文字列
文字列 NOT LIKE パターン文字列

・LIKEはマッチすればTRUE
・NOT LIKEはマッチしなければTRUE

パターンの記号
記号意味
%任意の文字列
_任意の文字
oddtbs=> select 'abcdef' like 'abc%';
 t
oddtbs=> select 'abcdef' not like 'abc%';
 f
oddtbs=> select 'abcdef' like 'abc_';
 f
oddtbs=> select 'abcdef' like 'abc___';
 t

文字列、特殊記号(%, _)を様々に変更して実行。

正規表現

文字列 ~ パターン文字列
文字列 !~ パターン文字列

・~はマッチすればTRUE
・!~はマッチしなければTRUE

パターンの記号
記号意味
.任意の文字
*直前の文字の繰り返し
[abc]a,b,cのうちのどれかの文字
[a-z]aからzまでのどれかの文字
^最初
$最後

その他非常に多くの記号がある。

oddtbs=> select 'abcdef' ~ 'b.*e';
 t
oddtbs=> select 'abcdef' !~ 'b.*e';
 f
oddtbs=> select 'abcdef' ~ '^b.*e$';
 f
oddtbs=> select 'abcdef' ~ '^a.*f$';
 t

※ 正規表現は^や$を使用しない場合、一部に含んでいればマッチしたとみなす。

文字列、パターンを様々に変更して実行。

比較演算子

演算子意味
=等しい
!=等しくない
<>同上
<小さい
<=以下
>大きい
>=以上
oddtbs=> select 100 > 20;
 t
oddtbs=> select '100' > '20';
 f

文字列の大小関係は辞書順で判断される

数値、文字列、演算子(=, !=, <>, <, <=, >, >=)を様々に変更して実行。

BETWEEN演算子

データ BETWEEN 値1 AND 値2
データ NOT BETWEEN 値1 AND 値2

BETWEENは、データが値1と値2の間(正確には値1以上で値2以下)であれば成り立つ。
NOT BETWEENは逆。

oddtbs=> select 15 between 10 and 20;
 t
oddtbs=> select 10 between 10 and 20;
 t
oddtbs=> select 30 between 10 and 20;
 f

数値を様々に変更して実行。

数値を文字列に変更して実行。

論理演算子

演算子意味
notではない
andなおかつ
orまたは
oddtbs=> select not 100 > 20;
 f
oddtbs=> select 1 <= 15 and 15 <= 12;
 f
oddtbs=> select 6 = 6 or 6 = 9;
 t

数値を様々に変更して実行。

行コンストラクタ

複数のデータを( )で囲んでまとめたものを行コンストラクタという。
行コンストラクタは = などで比較することができる。
大小関係の比較もできるが、バージョンによって動作が異なる。

oddtbs=> select (10, 20, 30) = (10, 20, 30);
 t
oddtbs=> select (10, 20, 30) = (10, 40, 30);
 f

数値を様々に変更して実行。

IN演算子

データ IN 行コンストラクタ
データ NOT IN 行コンストラクタ

IN演算子は、データが行コンストラクタのどれかの値に一致すれば成り立つ。
NOT INは逆。

oddtbs=> select 20 in (10, 20, 30);
 t
oddtbs=> select 40 in (10, 20, 30);
 f

数値を様々に変更して実行。