MySQL 文字列を操作するサンプル

MySQLの文字列を操作するサンプルです。

目次

サンプル 文字を結合する(concat,||演算子)
  文字の位置を返す(INSTR)
  文字を置き換える(REPLACE)
  前ゼロ/後ろゼロをつける(LPAD/RPAD)
  指定した位置の文字を取得する(SUBSTR)
  文字列の左から切り出す(LEFT)
  文字列の右から切り出す(RIGHT)
  位置指定で文字の置き換え/追加(INSERT)
  文字列の文字数を返す(CHAR_LENGTH)
  文字列の長さのバイト数を返す(LENGTH)
  前後の空白を削除する(TRIM/LTRIM/RTRIM)
  英字の大文字と小文字を変換する(LOWER/UPPER)

文字列の操作

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関数は、英字を大文字にします。

関連の記事

MySQL 文字列を切り出す(SUBSTRING)

△上に戻る