100日でPostgreSQLをマスター(19日目)~算術演算子と文字列関数~

PostgreSQL
※アフィリエイト広告を利用しています

 

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が違うといろいろと違うものですね。このあたりは慣れるしかないようです。

それではまた。

 

<18日目 | 目次 | 20日目>

<<1日目から読む

Photo by Richard Jacobs on Unsplash

コメント

タイトルとURLをコピーしました