PostgreSQL SQL
PostgreSQLのSQLで気付いたことをメモしておきます文字列関連
文字列の結合
select 'aaa' || 'bbb'
→aaabbb
空白削除
select '"' || trim(' abc ') || '"'
→"abc"
select '"' || rtrim(' abc ') || '"'
→" abc"
select '"' || ltrim(' abc ') || '"'
→"abc "
文字列抜き出し
select substr('abcdef',2,3)
→bcd
select right('abcdef', 3)
→def
select left('abcdef', 3)
→abc
ゼロ埋め
select lpad('123', 6, '0')
→000123
select rpad('123', 6, '0')
→123000
大文字小文字変換
select upper('abc')
→ABC
select lower('ABC')
→abc
文字列返還
数値→文字列
--to_charで文字列に変換。変換形式の頭にFMを付ける
select '"' || to_char(123,'FM9999') || '"'
→"123"
--FMを付けないと頭に半角スペースが入る
select '"' || to_char(123,'999') || '"'
→" 123"
--0を指定すると0埋めになる
select '"' || to_char(123,'FM0000') || '"'
→"0123"
--to_charを使わなくても文字列と結合すると文字列になる
select '"' || 999 || '"'
→"999"
文字列→数値
to_numberで文字列から数値に変換
select to_number('123', '9999')
→123
マイナスもそのまま変換
select to_number('-123', '999')
→-123
変換フォーマットの指定が足りないとすべて変換されない
select to_number('123', '99')
→12
小数点はドット
select to_number('123.4', '999.9')
→123.4
カンマはカンマ
select to_number('1,234', '9,999')
→1234
日時
日付取得、日時取得
select CURRENT_DATE
→日付取得
select CURRENT_TIMESTAMP
→日時取得
日付、日時→文字列
select to_char(CURRENT_DATE, 'YYYYMMDD')
select to_char(CURRENT_TIMESTAMP, 'YYYYMMDDHH24MISS')
文字列→日付、日時
select to_date('20230730', 'YYYYMMDD')
select to_timestamp('20230730162742', 'YYYYMMDDHH24MISS')
日付、日時計算
select to_date('20230730', 'YYYYMMDD') + interval '3 day'
→2023/08/02 0:00:00
select to_date('20230730', 'YYYYMMDD') + interval '3 month'
→2023/10/30 0:00:00
select to_date('20230730', 'YYYYMMDD') + interval '3 year'
→2026/07/30 0:00:00
select to_date('20230730', 'YYYYMMDD') + interval '3 hour'
→2023/07/30 3:00:00
select to_date('20230730', 'YYYYMMDD') + interval '3 minute'
→2023/07/30 0:03:00
select to_date('20230730', 'YYYYMMDD') + interval '3 second'
→2023/07/30 0:00:03
ページのトップへ戻る