Yukiです。
今日は算術演算子や文字列関数について勉強します。
他のDBMSの経験があれば、PostgreSQL独自の部分を中心に勉強しておけばよい気がします。
算術演算子
PostgreSQLではいろいろな算術演算子が使えるようです。面白いですね。
^ 累乗
2^3 → 8
プログラミング言語によって時々使えますが、PostgreSQLも「^」演算子で累乗が計算できます。
|/ 平方根
|/2 → 1.41421356…
ルート(√)です。「|」(パイプ)と「/」(スラッシュ)の2つの記号を組み合わせてルートというのはしゃれてますね。
||/ 立方根
||/8 → 2
なんと立方根まであります。
! または !! 階乗
3! → 3 * 2 * 1 → 6
階乗も計算できます。
!!3 → 6
前に書くこともできます。
@ 絶対値
@ -3 → 3
絶対値は「@」演算子を使うそうです。
文字列のパターンマッチング
PostgreSQLでは前方一致、中間一致、後方一致だけでなく、正規表現でのパターンマッチング用の演算子まで用意されています。
LIKE
例) col1 LIKE '%ABC%'
LIKEはOracleなどにもありますね。特に変わりません。
前方一致、中間一致、後方一致検索に使えます。
SIMILAR TO
例) col1 SIMILAR TO '%(ABC|DEF)%'
LIKEで使える「%」と「_」に加えて正規表現のメタ文字が使えます。
LIKEと同様に文字列全体に対してパターンマッチしているか判定します。
使えるメタ文字の詳細は、マニュアルを参照してください。
「~」演算子
文字列が正規表現にマッチするか判定します。
SIMILAR TO と違って、文字列全体がマッチするかではなく、一部で判定します。
例) 'ABCDEFG' SIMILAR TO 'CDE' → FALSE 'ABCDEFG' SIMILAR TO '%CDE%' → TRUE 'ABCDEFG' ~ 'CDE' → TRUE
また、「~」演算子は、否定を表す「!」や大文字小文字を区別しないようにする「*」と組み合わせて4パターンの使い方ができます。
- 「~」 ・・・指定した正規表現に一致
- 「~*」 ・・・指定した正規表現に一致(大文字小文字は区別しない)
- 「!~」 ・・・指定した正規表現に一致しない
- 「!~*」 ・・・指定した正規表現に一致しない(大文字小文字は区別しない)
例) 'ABCDEFG' ~ 'cde' → FALSE 'ABCDEFG' ~* 'cde' → TRUE 'ABCDEFG' !~ 'XYZ' → TRUE 'ABCDEFG' !~* 'cde' → FALSE
文字列関数
octet_length / char_length
バイト数を返すoctet_length関数と文字数を返すchar_length関数があります。
なお、単なるlength関数はchar_lengthと同じく文字数を返します。
substring
substring関数は引数の指定方法が特殊な感じがしました。
カンマ区切りで引数を渡すのではなく、fromやforといった前置詞をつけます。
書式: substring(文字列 [from 開始位置] [for 文字数])
開始位置は1からスタートです。
例) substring('ABCDEFGHI' from 4 for 3) → 'DEF'
まとめ
今日は、演算子や関数について学びました。
DBMSが違うといろいろと違うものですね。このあたりは慣れるしかないようです。
それではまた。
Photo by Richard Jacobs on Unsplash
コメント