いざという時便利? なMySQL文字列関数10選

使う機会はあまり無い気もするけど、何かの時に使えると便利かもしれないMySQLの文字列関数をざっくり紹介。

1. CONCAT – 文字列を連結

SELECT CONCAT(‘Ma’, ‘ria’, ‘DB’); — ‘MariaDB’

引数はいくつでもOK。ちなみに、「–」はSQLのコメント記法。

2. SUBSTRING – 文字列を指定した位置で切り出し

上は標準SQL。下はMySQL独自。

・前から6番目以降の文字列を取得
SELECT SUBSTRING(‘Knowledgebase’ FROM 5); — ‘edgebase’
SELECT SUBSTRING(‘Knowledgebase’,5); — ‘edgebase’

・前から3番目以降、7文字を取得
SELECT SUBSTRING(‘Knowledgebase’,FROM 3, FOR 7); — ‘wledgeb’
SELECT SUBSTRING(‘Knowledgebase’,3,7); — ‘wledgeb’

3. SUBSTRING_INDEX – 文字列を分割

第一引数の文字列を、第二引数のデリミタで分割し、第三引数の値より前の文字列を返す。第三引数を負の数にすると後ろからになる。

SELECT SUBSTRING_INDEX(‘kb.askmonty.org’, ‘.’, 1); — ‘kb’
SELECT SUBSTRING_INDEX(‘kb.askmonty.org’, ‘.’, 2); — ‘kb.askmonty’
SELECT SUBSTRING_INDEX(‘kb.askmonty.org’, ‘.’, 3); — ‘kb.askmonty.org’
SELECT SUBSTRING_INDEX(‘kb.askmonty.org’, ‘.’, -1); — ‘org’
SELECT SUBSTRING_INDEX(‘kb.askmonty.org’, ‘.’, -2); — ‘askmonty.org’
SELECT SUBSTRING_INDEX(‘kb.askmonty.org’, ‘.’, -3); — ‘kb.askmonty.org’

4. RIGHT/LEFT – 右/左から指定文字列を返す

SELECT RIGHT(‘MariaDB’, 2); — ‘DB’
SELECT LEFT(‘MariaDB’, 2); — ‘Ma’

5. UPPER/LOWER – 文字列を全部大文字/小文字に変換

SELECT UPPER(‘MariaDB’); — ‘MARIADB’
SELECT LOWER(‘MariaDB’); — ‘mariadb’

6. TRIM – 与えた文字列の前後から空白を除去

SELECT TRIM(‘     hoge     ‘); — ‘hoge’

7. LENGTH/CHAR_LENGTH – 与えた文字列のバイト数/文字数を返す

SELECT LENGTH(‘MariaDB’); — 7
SELECT LENGTH(‘マリア’); — 9
SELECT CHAR_LENGTH(‘MariaDB’); — 7
SELECT CHAR_LENGTH(‘マリア’); — 3

8. CAST – 文字列を指定した型に変換

SELECT CAST(‘2013-07-02 00:00:00’ AS DATE);

9. LOCATE – 検索文字列の出現位置を取得

SELECT LOCATE(‘bar’, ‘foobarbar’); — 4

10. REPLACE – 文字列置換

SELECT REPLACE(‘www.mariadb.org’, ‘w’, ‘Ww’); — ‘WwWwWw.mariadb.org’

MySQLで使える文字列関数の完全なリストは公式ドキュメントを参照。

また、MySQL互換DBであるMariaDBのドキュメントも構成が分かりやすくてオススメ(ただし、現在は英語版のみ)。

コメントを残す