ここでは文字列を操作するSQL関数について紹介します。

文字列を編集する

文字列の左右の空白を削除する(TRIM関数)

SELECT '[' || TRIM(' ABCDE ') || ']' FROM DUAL
--結果:[ABCDE]


文字列の左の空白を削除する(LTRIM関数)

SELECT '[' || LTRIM(' ABCDE ') || ']' FROM DUAL
--結果:[ABCDE ]


文字列の右の空白を削除する(RTRIM関数)

SELECT '[' || RTRIM(' ABCDE ') || ']' FROM DUAL
--結果:[ ABCDE]


指定した文字列を別の文字列に置き換える(REPLACE関数)

構文

REPLACE(文字列, 検索文字列, 置換文字列)
SELECT REPLACE('2020-01-31', '-', '/') FROM DUAL
--結果:2020/01/31


文字列の左側を特定の文字で埋める(LPAD関数)

構文

LPAD(文字列, 指定桁数, 埋め込み文字)
SELECT LPAD('ABC', 5, '*') FROM DUAL
--結果:**ABC


文字列の右側を指定した文字で埋める(RPAD関数)

構文

RPAD(文字列, 指定桁数, 埋め込み文字)
SELECT RPAD('ABC', 5, '*') FROM DUAL
--結果:ABC**


文字列を全角に変換する(TO_MULTI_BYTE関数)

SELECT TO_MULTI_BYTE('123-ABC') FROM DUAL
--結果:123-ABC


文字列を半角に変換する(TO_SINGLE_BYTE関数)

SELECT TO_SINGLE_BYTE('123-ABC') FROM DUAL
--結果:123-ABC


半角英小文字を大文字に変換する(UPPER関数)

SELECT UPPER('abc') FROM DUAL
--結果:ABC


半角英大文字を小文字に変換する(LOWER関数)

SELECT LOWER('ABC') FROM DUAL
--結果:abc


文字列の情報を取得する

文字列の長さを文字数で取得する(LENGTH関数)

SELECT LENGTH('あいAB') FROM DUAL
--結果:4


文字列の長さをバイト数で取得する(LENGTHB関数)

SELECT LENGTHB('AB') FROM DUAL
--結果:2

SELECT LENGTHB('あい') FROM DUAL
--結果:6

※ 全角文字の場合、使用しているキャラクタセットによりバイト数は異なります。例えば UTF-8 の場合は全角文字1文字が3バイトになります。


文字列の開始位置から後ろの文字列を取得する(SUBSTR関数、SUBSTRB関数)

構文

SUBSTR(文字列, 開始位置)

--バイト単位
SUBSTRB(文字列, 開始位置)
SELECT SUBSTR('あいうえお', 3) FROM DUAL
--結果:うえお

--バイト単位
SELECT SUBSTRB('あいうえお', 3) FROM DUAL
--結果:いうえお


文字列の開始位置から文字数分の文字を取得する(SUBSTR関数、SUBSTRB関数)

構文

SUBSTR(文字列, 開始位置, 文字数)

--バイト単位
SUBSTRB(文字列, 開始位置, 文字数)
SELECT SUBSTR('あいうえお', 2, 3) FROM DUAL
--結果:いうえ

--バイト単位
SELECT SUBSTRB('あいうえお', 4, 6) FROM DUAL
--結果:いう


文字列の出現位置を取得する(INSTR関数、INSTRB関数

構文

INSTR(文字列 , 検索文字列 )

--バイト単位
INSTRB(文字列 , 検索文字列 )
SELECT INSTR('あいうえお', 'う') FROM DUAL
--結果:3

--バイト単位
SELECT INSTRB('あいうえお', 'う') FROM DUAL
--結果:7


正規表現を使って文字列の出現位置を取得する(REGEXP_INSTR関数

構文

REGEXP_INSTR(文字列, 検索パターン)
--数字が最初に出現する位置
SELECT REGEXP_INSTR('abc123hij', '[0-9]') FROM DUAL
--結果:4

--検索開始位置が4でアルファベットの「a~z」が出現する位置
SELECT REGEXP_INSTR('abc123hij', '[a-z]', 4) FROM DUAL
--結果:7


以上、文字列を操作するSQL関数について解説しました。