オラクルで文字列からバイト数単位で文字を切り出すには、
SUBSTRB関数を使用します。
構文
構文は以下の通りです。
- (SUBSTRB構文)
- SUBSTRB(<対象文字列>, <開始バイト位置>, <終了バイト位置>)
終了バイト位置は省略可です。省略した場合は末尾までとなります。
サンプルソース
以下のようなテーブルをサンプルとします。
CD | NAME |
---|---|
001 | ABCDEFGHIJ |
002 | あいうえおかきくけこ |
003 | あAいBうCえDおE |
文字コードは全角=2バイトとします。
例1)1バイト目から5バイト取得する
1 |
SELECT SUBSTRB(name, 1, 5) FROM tbl1; |
- 実行結果
- ABCDE あい あAい
例2)3バイト目から5バイト取得する
1 |
SELECT SUBSTRB(name, 3, 5) FROM tbl1; |
- 実行結果
- CDEFG いう AいB
例3)3バイト目から文字列の末尾まで取得する
1 |
SELECT SUBSTRB(name, 3) FROM tbl1; |
- 実行結果
- CDEFGHIJ いうえおかきくけこ AいBうCえDおE
メモ
- 使用している文字コードがUnicodeなどの場合は結果は異なります。
(Unicodeは1文字が3バイトで表されるため) - 切り出した部分が全角文字の途中となる場合、その文字は切り出されません。
- 文字数単位で文字を切り出したい場合は、SUBSTR関数を使用します。
※詳しくは、「文字数単位で文字を切り出す(SUBSTR)」をご覧ください。