今回は、文字列を操作する関数の使い方をまとめて説明したいと思います。この記事で紹介する関数でできることは「文字列の結合、空白削除、置換、全半角変換、英字の大小変換、文字埋め、文字の長さ取得、文字列の切り取り、文字列検索」です。
文字列の結合
文字列を結合する時は || 演算子 または CONCAT関数を使用します。
-- || 演算子を使用
SELECT 'Hello' || 'World' AS "CONCAT" FROM DUAL-- COCAT関数を使用
SELECT CONCAT('Hello','World') AS "CONCAT" FROM DUAL結果はどちらも、HelloWorldになります。
| CONCAT |
|---|
| HelloWorld |
文字列の編集
空白削除(TRIM、LTRIM、RTRIM)
TRIM関数は文字列の左右の空白を削除する時に使用します。
SELECT TRIM(' Hello World ') AS "TRIM" FROM DUAL| TRIM |
|---|
| Hello World |
左の空白のみ削除したい場合は、 LTRIM関数、右の空白のみ削除したい場合は、 RTRIM関数を使用します。
SELECT LTRIM(' Hello World ') AS "TRIM" FROM DUAL| TRIM |
|---|
| Hello World |
SELECT RTRIM(' Hello World ') AS "TRIM" FROM DUAL| TRIM |
|---|
| Hello World |
置換(REPLACE)
REPLACE関数は指定した文字列を置き換える時に使用します。
REPLACE(対象文字列, 検索文字列, 置換文字列)– を / に置換してみます。
SELECT REPLACE('2024-03-28', '-', '/') AS "REPLACE" FROM DUAL| REPLACE |
|---|
| 2024/03/28 |
全半角変換(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_SINGLE_BYTE関数は文字列を全角に変換する時に使用します。
SELECT TO_SINGLE_BYTE('GPT-BLOG') AS "TO_SINGLE_BYTE" FROM DUAL| TO_SINGLE_BYTE |
|---|
| GPT-BLOG |
英字の大小変換(UPPER、LOWER)
UPPER関数は英小文字を英大文字に変換する時に使用します。
SELECT UPPER('oracle') AS "UPPER" FROM DUAL| UPPER |
|---|
| ORACLE |
SELECT LOWER('ORACLE') AS "LOWER" FROM DUAL| LOWER |
|---|
| oracle |
文字埋め(LPAD、RPAD)
LPAD関数は文字列の左側を特定の文字で埋めたい時に使用します。
LPAD(対象文字列, 指定桁数, 埋め込み文字)SELECT LPAD('SQL', 4, '/') AS "LPAD" FROM DUAL| LPAD |
|---|
| /SQL |
RPAD関数は文字列の右側を特定の文字で埋めたい時に使用します。
RPAD(対象文字列, 指定桁数, 埋め込み文字)SELECT RPAD('SQL', 4, '/') AS "RPAD" FROM DUAL| RPAD |
|---|
| SQL/ |
対象文字列よりも指定桁数が小さい場合は、文字列が削られます。例えば LPAD(‘SQL’, 1, ‘/’) または RPAD(‘SQL’, 1, ‘/’)だった場合の結果は S になります。
| RESULT |
|---|
| S |
文字列の取得
文字の長さ(LENGTH、LENGTHB)
LENGTH関数は文字列の長さを文字数で取得する時に取得します。
SELECT LENGTH('GPTーBLOG') AS "文字数" FROM DUAL| 文字数 |
|---|
| 8 |
LENGTHB関数は文字列の長さをバイト数で取得する時に取得します。
SELECT LENGTHB('GPTーBLOG') AS "文字数" FROM DUAL| 文字数 |
|---|
| 10 |
ー が全角なので LENGTH と LENGTHB を使った時の数値が異なりました。
バイト数や文字数が知りたい場合は、下記のようなSQLで一気に確認してみるといいかもですね。
SELECT
'対象文字' AS "文字数調査",
LENGTH('対象文字') AS "文字数",
LENGTHB('対象文字') AS "バイト数"
FROM
dual| 文字数調査 | 文字数 | バイト数 |
|---|---|---|
| 対象文字 | 4 | 12 |
文字列の切り取り(SUBSTR、SUBSTRB)
SUBSTR関数は文字列の開始位置から後ろの文字列を文字数で取得する時に使用します。
SUBSTR(対象文字列, 開始位置)SELECT SUBSTR('GPTBLOG', 4) AS "SUBSTR" FROM DUAL| SUBSTR |
|---|
| BLOG |
SUBSTRB関数は文字列の開始位置から後ろの文字列をバイト数で取得する時に使用します。
SUBSTRB(対象文字列, 開始位置)SELECT SUBSTRB('GPTBLOG', 9) AS "SUBSTRB" FROM DUAL| SUBSTR |
|---|
| BLOG |
文字列検索(INSTR、INSTRB)
INSTR関数は対象の文字列が最初に出現する位置を文字数で取得する時に使用します。
INSTR(対象文字列 , 検索文字列 )SELECT INSTR('sample@gmail.com', 'm') AS "INSTR" FROM DUAL| INSTR |
|---|
| 3 |
NSTRB関数は対象の文字列が最初に出現する位置をバイト数で取得する時に使用します。
INSTRB(対象文字列 , 検索文字列 )SELECT INSTRB('sample@gmail.com', 'm') AS "INSTRB" FROM DUAL| INSTRB |
|---|
| 5 |
まとめ
文字列関数についてざっくり説明していきました。ここで説明できていない関数もあるかと思うので、他の文字列関数に関してはリファレンスを確認してみてください!次の記事では数値関数について説明していこうと思います。

