MySQLの文字列を操作するサンプルです。
目次
文字列の操作
MySQLの文字列を操作するサンプルです。
文字を結合する(concat,||演算子)
select concat('あいう', 'えお') from dual; -- あいうえお
select concat('あいう', 'えお', 'かき') from dual; --あいうえおかき
select concat('あいう', null) from dual; -- null
set sql_mode='PIPES_AS_CONCAT';
select 'あいう' || 'えお' from dual; -- あいうえお
select 'あいう' || 'えお' || 'かき' from dual; -- あいうえおかき
select 'あいう' || null from dual; -- null
3行目は、結合する値がnullの場合です。結果はnullになるので注意が必要です。
6行目は、||演算子で文字列のリテラルを結合しています。
その場合5行目のsql_modeの設定が必要です。
文字の位置を返す(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を返します。
文字を置き換える(REPLACE)
REPLACE(文字列,置換前の文字列,置換後の文字列) |
SELECT REPLACE('あいう','い','か') FROM DUAL; --あかう
SELECT REPLACE('あいう','いう','か') FROM DUAL; --あか
SELECT REPLACE('あいう','いう','かき') FROM DUAL; --あかき
SELECT REPLACE('あいう','いう','かきく') FROM DUAL; --あかきく
REPLACE関数は、2つめの引数の文字列を3つめの文字に置き換えます。
前ゼロ/後ろゼロをつける(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つめの引数は文字数です。
文字列の左から切り出す(LEFT)
LEFT(文字列,文字数) |
SELECT LEFT('abcde',1) FROM DUAL; --a
SELECT LEFT('abcde',2) FROM DUAL; --ab
SELECT LEFT('abcde',3) FROM DUAL; --abc
SELECT LEFT('あいうえお',1) FROM DUAL; --あ
SELECT LEFT('あいうえお',2) FROM DUAL; --あい
SELECT LEFT('あいうえお',3) FROM DUAL; --あいう
LEFT関数は文字列の左から指定した文字数分の文字を切り出します。
文字列の右から切り出す(RIGHT)
RIGHT(文字列,文字数) |
SELECT RIGHT('abcde',1) FROM DUAL; --e
SELECT RIGHT('abcde',2) FROM DUAL; --de
SELECT RIGHT('abcde',3) FROM DUAL; --cde
SELECT RIGHT('あいうえお',1) FROM DUAL; --お
SELECT RIGHT('あいうえお',2) FROM DUAL; --えお
SELECT RIGHT('あいうえお',3) FROM DUAL; --うえお
RIGHT関数は文字列の右から指定した文字数分の文字を切り出します。
位置指定で文字の置き換え/追加(INSERT)
INSERT(文字列,開始位置,文字数,置換後の文字) |
SELECT INSERT('abc',1,1,'x') FROM DUAL; --xbc
SELECT INSERT('abc',1,2,'x') FROM DUAL; --xc
SELECT INSERT('abc',1,3,'x') FROM DUAL; --x
SELECT INSERT('abc',2,1,'x') FROM DUAL; --axc
SELECT INSERT('あいう',1,1,'か') FROM DUAL; --あかう
SELECT INSERT('あいう',1,2,'か') FROM DUAL; --かう
SELECT INSERT('あいう',1,3,'か') FROM DUAL; --か
SELECT INSERT('あいう',2,1,'か') FROM DUAL; --あかう
INSERT関数は位置指定で、文字の置き換えと追加を行います。
文字列の文字数を返す(CHAR_LENGTH)
SELECT CHAR_LENGTH('ab') FROM DUAL; --2
SELECT CHAR_LENGTH('abc') FROM DUAL; --3
SELECT CHAR_LENGTH('あい') FROM DUAL; --2
SELECT CHAR_LENGTH('あいう') FROM DUAL; --3
CHAR_LENGTH関数は、文字数を返します。
文字列の長さのバイト数を返す(LENGTH)
SELECT LENGTH('ab') FROM DUAL; --2
SELECT LENGTH('abc') FROM DUAL; --3
SELECT LENGTH('あい') FROM DUAL; --6
SELECT LENGTH('あいう') FROM DUAL; --9
LENGTH関数は、バイト数を返します。
前後の空白を削除する(TRIM/LTRIM/RTRIM)
SELECT TRIM(' あいうえ ') FROM DUAL; --あいうえ
SELECT LTRIM(' あいうえ ') FROM DUAL; --あいうえ△
SELECT RTRIM(' あいうえ ') FROM DUAL; --△あいうえ
TRIM関数は、前後の半角スペースを削除します。全角スペースは削除しません。
LTRIMは、左側にある空白を削除します(left)。
RTRIMは、右側にある空白を削除します(right)。
英字の大文字と小文字を変換する(LOWER/UPPER)
SELECT LOWER('AAb100') FROM DUAL; --aab100
SELECT UPPER('aaB100') FROM DUAL; --AAB100
LOWER関数は、英字を小文字にします。
UPPER関数は、英字を大文字にします。
関連の記事