【Oracle】文字列関数を使いこなそう!

Oracle

今回は、文字列を操作する関数の使い方をまとめて説明したいと思います。この記事で紹介する関数でできることは文字列の結合、空白削除、置換、全半角変換、英字の大小変換、文字埋め、文字の長さ取得、文字列の切り取り、文字列検索です。

文字列の結合

文字列を結合する時は || 演算子 または CONCAT関数を使用します。

-- || 演算子を使用
SELECT 'Hello' || 'World' AS "CONCAT"  FROM DUAL
-- COCAT関数を使用
SELECT CONCAT('Hello','World') AS "CONCAT"  FROM DUAL

結果はどちらも、HelloWorldになります。

CONCAT
HelloWorld
CONCAT関数で文字結合

文字列の編集

空白削除(TRIM、LTRIM、RTRIM)

TRIM関数は文字列の左右の空白を削除する時に使用します。

SELECT TRIM(' Hello World ') AS "TRIM" FROM DUAL
TRIM
Hello World
TRIM関数で左右の空白削除

左の空白のみ削除したい場合は、 LTRIM関数、右の空白のみ削除したい場合は、 RTRIM関数を使用します。

SELECT LTRIM(' Hello World ') AS "TRIM" FROM DUAL
TRIM
Hello World
LTRIM関数で左の空白を削除
SELECT RTRIM(' Hello World ') AS "TRIM" FROM DUAL
TRIM
Hello World
RTRIM関数で右の空白を削除

置換(REPLACE)

REPLACE関数は指定した文字列を置き換える時に使用します。

REPLACE(対象文字列, 検索文字列, 置換文字列)

– を / に置換してみます。

SELECT REPLACE('2024-03-28', '-', '/') AS "REPLACE" FROM DUAL
REPLACE
2024/03/28
REPLACE関数で-を/に置換

全半角変換(TO_MULTI_BYTE、TO_SINGLE_BYTE)

TO_MULTI_BYTE関数は文字列を半角に変換する時に使用します。

SELECT TO_MULTI_BYTE('GPT-BLOG') AS "TO_MULTI_BYTE" FROM DUAL
TO_MULTI_BYTE
GPT-BLOG
TO_MULTI_BYTE関数で半角から全角に変換

TO_SINGLE_BYTE関数は文字列を全角に変換する時に使用します。

SELECT TO_SINGLE_BYTE('GPT-BLOG') AS "TO_SINGLE_BYTE" FROM DUAL
TO_SINGLE_BYTE
GPT-BLOG
TO_SINGLE_BYTE関数で全角から半角に変換

英字の大小変換(UPPER、LOWER)

UPPER関数は英小文字を英大文字に変換する時に使用します。

SELECT UPPER('oracle') AS "UPPER" FROM DUAL
UPPER
ORACLE
UPPER関数で英小文字を英大文字に変換
SELECT LOWER('ORACLE') AS "LOWER" FROM DUAL
LOWER
oracle
LOWER関数で英大文字を英小文字に変換

文字埋め(LPAD、RPAD)

LPAD関数は文字列の左側を特定の文字で埋めたい時に使用します。

LPAD(対象文字列, 指定桁数, 埋め込み文字)
SELECT LPAD('SQL', 4, '/') AS "LPAD" FROM DUAL
LPAD
/SQL
LPAD関数で文字列の左側に/を追加

RPAD関数は文字列の右側を特定の文字で埋めたい時に使用します。

RPAD(対象文字列, 指定桁数, 埋め込み文字)
SELECT RPAD('SQL', 4, '/') AS "RPAD" FROM DUAL
RPAD
SQL/
RPAD関数で文字列の右側に/を追加

対象文字列よりも指定桁数が小さい場合は、文字列が削られます。例えば LPAD(‘SQL’, 1, ‘/’) または RPAD(‘SQL’, 1, ‘/’)だった場合の結果は S になります。

RESULT
S
文字列より桁数が少ない場合

文字列の取得

文字の長さ(LENGTH、LENGTHB)

LENGTH関数は文字列の長さを文字数で取得する時に取得します。

SELECT LENGTH('GPTーBLOG') AS "文字数" FROM DUAL
文字数
8
LENGTH関数で文字数を取得

LENGTHB関数は文字列の長さをバイト数で取得する時に取得します。

SELECT LENGTHB('GPTーBLOG') AS "文字数" FROM DUAL
文字数
10
LENGTHB関数でバイト数を取得

ー が全角なので LENGTH と LENGTHB を使った時の数値が異なりました。

バイト数や文字数が知りたい場合は、下記のようなSQLで一気に確認してみるといいかもですね。

SELECT
  '対象文字' AS "文字数調査",
  LENGTH('対象文字') AS "文字数",
  LENGTHB('対象文字') AS "バイト数"
FROM
  dual
文字数調査文字数バイト数
対象文字412
文字列(対象文字)は4文字で12バイト

文字列の切り取り(SUBSTR、SUBSTRB)

SUBSTR関数は文字列の開始位置から後ろの文字列を文字数で取得する時に使用します。

SUBSTR(対象文字列, 開始位置)
SELECT SUBSTR('GPTBLOG', 4) AS "SUBSTR" FROM DUAL
SUBSTR
BLOG
SUBSTR関数でBLOGのみ取得

SUBSTRB関数は文字列の開始位置から後ろの文字列をバイト数で取得する時に使用します。

SUBSTRB(対象文字列, 開始位置)
SELECT SUBSTRB('GPTBLOG', 9) AS "SUBSTRB" FROM DUAL
SUBSTR
BLOG
SUBSTRB関数でBLOGのみ取得

文字列検索(INSTR、INSTRB)

INSTR関数は対象の文字列が最初に出現する位置を文字数で取得する時に使用します。

INSTR(対象文字列 , 検索文字列 )
SELECT INSTR('sample@gmail.com', 'm') AS "INSTR" FROM DUAL
INSTR
3
INSTR関数で最初にmが出てくる位置を文字数で取得

NSTRB関数は対象の文字列が最初に出現する位置をバイト数で取得する時に使用します。

INSTRB(対象文字列 , 検索文字列 )
SELECT INSTRB('sample@gmail.com', 'm') AS "INSTRB" FROM DUAL
INSTRB
5
INSTR関数で最初にmが出てくる位置をバイト数で取得

まとめ

文字列関数についてざっくり説明していきました。ここで説明できていない関数もあるかと思うので、他の文字列関数に関してはリファレンスを確認してみてください!次の記事では数値関数について説明していこうと思います。

コメント