現場でよく使うSQL 初心者の忘備録
SQL初心者が初めて現場に入った時に、よく使ったSQLまとめ
posgre,Oracleをメインに使用
文字列関数と演算子
部分文字列の取り出し
substr(string, start int, length int])
--例
substr('Thomas' , 2, 3)
--結果
hom
文字列の結合
string || string
-- 例
'Thomas' || ' ' || 'Edison'
-- 結果
Thomas Edison
半角スペースを文字列の先頭と末尾から除去する
trim(string)
-- 例
trim(' Thomas Edison ')
-- 結果
Thomas Edison
指定文字列を文字列の先頭と末尾から除去する
trim(characters from string)
-- 例
trim('abc' from 'abcThomasabc')
-- 結果
Thomas
文字列の前後から全角スペースと半角スペースを除去したい場合は以下を使用(現場で移行元データ に不要なスペースが多数含まれており、以下の記述は頻繁に使用した)
文字列を置換する
trim(trim(' ' from ' Thomas ')
replace(string, from_text string, to_text string)
-- 例
replace('abcdefabcdef', 'cd', 'XX')
-- 結果
abXXefabXXef
正規表現で文字列を置換する
regexp_replace(string, from_text string, to_text string)
-- 例
regexp_replace('Thomas', '.[mN]a.', 'M')
-- 結果
ThM
大文字⇔小文字の変換
upper(string) -- 大文字に変換 lower(string) -- 小文字に変換
文字列の文字数・バイト数を返す
length(string) -- 文字数 lengthb(string) -- バイト数
-- 例
length('⻁視眈々')
-- 結果
4
-- 例
lengthb('⻁視眈々')
-- 結果
8
-- 例
upper('tom')
-- 結果
TOM
-- 例
lower('TOM')
-- 結果
tom
データ型書式設定関数
PostgreSQLのデータ型書式設定関数は様々なデータ型(日付/時刻データ型や数値データ型など)を文字列へ変 換したり、文字列を特定のデータ型に変換することができる
タイムスタンプ⇒文字列
to_char(timestamp, text)
-- 例
to_char(current_timestamp, 'HH12:MI:SS')
整数⇒文字列
to_char(int)
-- 例 to_char(128)
文字列⇒日付
to_date(text, text)
-- 例
to_date('1998/03/02', 'yyyy/mm/dd')
文字列⇒数値
to_number(text)
-- 例 to_number('2980')
条件式
SQLのCASE式は、ほかのプログラミング言語のif/else構文に類似している
CASE文
CASE
WHEN 条件 THEN
-- TRUEの場合の処理 ELSE
-- FALSEの場合の処理 END
使用例
SELECT
age
, CASE
WHEN age >= 20 THEN '成人'
ELSE '未成年' END
FROM
wk_tbl;
以下のようにWHERE句で使用することもできる
SELECT ...
WHERE
CASE
WHEN x <> 0 THEN y/x > 1.5
ELSE false
END;