目次
文字を結合する(||演算子/concat)
select 'あいう' || 'えお' from dual; --あいうえお
select 'あいう' || 'えお' || 'かき' from dual; --あいうえおかき
select 'あいう' || null from dual; --あいう
select concat('あいう', 'えお') from dual; -- あいうえお
--select concat('あいう', 'えお', 'かき') from dual; --エラー
select concat('あいう', null) from dual; -- あいう
1行目は、||演算子で文字列のリテラルを結合しています。
2行目のように2つ以上の文字列の結合が可能です。
3行目のようにnullを結合した場合も文字列は出力されます。
5行目は、concat関数で値を結合しています。
6行目のconcat関数の場合は、2つ以上の文字列の結合はエラーになります。
文字の位置を返す(INSTR)
INSTR(文字列,検索する文字列) |
SELECT INSTR('あいうえ','あ') FROM DUAL; --1
SELECT INSTR('あいうえ','い') FROM DUAL; --2
SELECT INSTR('あいうえ','あいう') FROM DUAL; --1
SELECT INSTR('abcd','a') FROM DUAL; --1
SELECT INSTR('abcd','b') FROM DUAL; --2
SELECT INSTR('あいうえ','か') FROM DUAL; --0
1文字目にある場合は1を返します。
6行目のように該当の文字がない場合は0を返します。
文字の位置をバイトで返す(INSTRB)
INSTRB(文字列,検索する文字列) |
SELECT INSTRB('あいうえ','あ') FROM DUAL; --1
SELECT INSTRB('あいうえ','い') FROM DUAL; --4
SELECT INSTRB('あいうえ','あいう') FROM DUAL; --1
SELECT INSTRB('abcd','a') FROM DUAL; --1
SELECT INSTRB('abcd','b') FROM DUAL; --2
SELECT INSTRB('あいうえ','か') FROM DUAL; --0
1文字目にある場合は1を返します。
2行目は、4を返します。この環境の文字コードはAL32UTF8で全角は1文字3バイトです。
5行目は、2を返します。英字は1バイトです。
6行目のように該当の文字がない場合は0を返します。
文字を置き換える(REPLACE)
REPLACE(文字列,置換前の文字列,置換後の文字列) |
SELECT REPLACE('あいう','い','か') FROM DUAL; --あかう
SELECT REPLACE('あいう','いう','か') FROM DUAL; --あか
SELECT REPLACE('あいう','いう','かき') FROM DUAL; --あかき
SELECT REPLACE('あいう','いう','かきく') FROM DUAL; --あかきく
REPLACE関数は、2つめの引数の文字を3つめ引数の文字に置き換えます。
文字を置き換える(TRANSLATE)
TRANSLATE(文字列,置換前の文字,置換後の文字) |
SELECT TRANSLATE('あいうえ','いう','かき') FROM DUAL; --あかきえ
SELECT TRANSLATE('あいうえ','あう','かき') FROM DUAL; --かいきえ
SELECT TRANSLATE('あいうえ','あうい','かきく') FROM DUAL; --かくきえ
TRANSLATE関数は、2つめの引数を文字の単位として文字を置き換えます。
前ゼロ/後ろゼロをつける(LPAD/RPAD)
LPAD(文字列,桁数,ゼロ(0)) |
RPAD(文字列,桁数,ゼロ(0)) |
SELECT LPAD('123','5','0') FROM DUAL; -- 00123
SELECT RPAD('123','5','0') FROM DUAL; -- 12300
LPADは、前に文字列をつけます。Lはleftです。
RPADは、後に文字列をつけます。RはRightです。
指定した位置の文字を取得する(SUBSTR)
SUBSTR(文字列,位置,文字数) |
SELECT SUBSTR('あいうえ','1','1') FROM DUAL; -- あ
SELECT SUBSTR('あいうえ','2','1') FROM DUAL; -- い
SELECT SUBSTR('あいうえ','1','2') FROM DUAL; -- あい
SELECT SUBSTR('abcd','1','1') FROM DUAL; -- a
SELECT SUBSTR('abcd','1','2') FROM DUAL; -- ab
SELECT SUBSTR('あいうえ','3') FROM DUAL; -- うえ
SUBSTR関数の2つめの引数は開始位置で、3つめの引数は文字数です。
指定した位置の文字を取得する(SUBSTRB)
SUBSTRB(文字列,位置,文字数(バイト単位)) |
SELECT SUBSTRB('あいうえ','1','3') FROM DUAL; -- あ
SELECT SUBSTRB('あいうえ','4','3') FROM DUAL; -- い
SELECT SUBSTRB('あいうえ','1','6') FROM DUAL; -- あい
SELECT SUBSTRB('abcd','1','1') FROM DUAL; -- a
SELECT SUBSTRB('abcd','1','2') FROM DUAL; -- ab
SELECT SUBSTRB('あいうえ','6') FROM DUAL; -- うえ
SUBSTRB関数の2つめの引数は開始位置で、3つめの引数は文字数です。
バイトの単位で指定します。
2行目の開始位置は4です。この環境の文字コードはAL32UTF8で全角は1文字3バイトのためです。
文字列の文字数を返す(LENGTH)
SELECT LENGTH('ab') FROM DUAL; --2
SELECT LENGTH('abc') FROM DUAL; --3
SELECT LENGTH('あい') FROM DUAL; --2
SELECT LENGTH('あいう') FROM DUAL; --3
LENGTHは文字数を返します。
前後の空白を削除する(TRIM)
SELECT TRIM(' あいうえ ') FROM DUAL; --あいうえ
SELECT LTRIM(' あいうえ ') FROM DUAL; --あいうえ△
SELECT RTRIM(' あいうえ ') FROM DUAL; --△あいうえ
TRIM関数は、前後の半角スペースを削除します。全角スペースは削除しません。
LTRIMは、左側にある空白を削除します(left)。
RTRIMは、右側にある空白を削除します(right)。
英数字の半角と全角を変換する(TO_MULTI_BYTE/TO_SINGLE_BYTE)
SELECT TO_MULTI_BYTE('AAb100') FROM DUAL; --AAb100
SELECT TO_SINGLE_BYTE('AAb100') FROM DUAL; --AAb100
TO_MULTI_BYTE関数は、英数字を全角にします。
TO_SINGLE_BYTE関数は、英数字を半角にします。
英字の大文字と小文字を変換する(LOWER/UPPER)
SELECT LOWER('AAb100') FROM DUAL; --aab100
SELECT UPPER('aaB100') FROM DUAL; --AAB100
LOWER関数は、英字を小文字にします。
UPPER関数は、英字を大文字にします。
関連の記事