MySQLには文字列に対して使える関数がいくつか用意されています。この記事ではその中でも特に基本的なものを例に、関数を使った文字列の処理について学びましょう。
目次
文字列の一部を切り出す SUBSTRING()
文字列の一部を切り出すには SUBSTRING() を使います。
SUBSTRING(何文字目から切り出すか, 何文字分切り出すか)
実際にSELECT文で、特定のカラムの文字列を切り出して取得してみましょう。
-- titlesという名前のテーブルがあれば削除 DROP TABLE IF EXISTS titles; -- titlesという名前のテーブルを作成 CREATE TABLE titles ( id INT NOT NULL AUTO_INCREMENT, author_id INT, post_title VARCHAR(50) UNIQUE, view INT, PRIMARY KEY (id) ); -- レコードを挿入 INSERT INTO titles (author_id, post_title, view) VALUES (1, 'MySQLとは', 10), (2, 'SQLとはなにか', 50), (1, 'DockerでMySQLを使う方法', 100); -- 3文字目以降を切り出す SELECT post_title, SUBSTRING(post_title, 3) FROM titles; -- 3文字目から3文字切り出す SELECT post_title, SUBSTRING(post_title, 3, 3) FROM titles; -- 末尾から3文字切り出す SELECT post_title, SUBSTRING(post_title, -3) FROM titles;
実行結果は次のとおりです。
post_title SUBSTRING(post_title, 3) DockerでMySQLを使う方法 ckerでMySQLを使う方法 MySQLとは SQLとは SQLとはなにか Lとはなにか post_title SUBSTRING(post_title, 3, 3) DockerでMySQLを使う方法 cke MySQLとは SQL SQLとはなにか Lとは post_title SUBSTRING(post_title, -3) DockerでMySQLを使う方法 う方法 MySQLとは Lとは SQLとはなにか なにか
文字列の連結 CONCAT()
文字列を連結するには CONCAT() を使います。
CONCAT(文字列1, 文字列2, 文字列3)
実際にSELECT文で、複数のカラムの文字列を連結して取得してみましょう。
-- post_titleと":"とviewを連結して取得 SELECT CONCAT(post_title, ":", view) FROM titles;
実行結果は次のとおりです。
CONCAT(post_title, ":", view) MySQLとは:10 SQLとはなにか:50 DockerでMySQLを使う方法:100
文字数 CHAR_LENGTH()
文字数を取得するには CHAR_LENGTH() を使います。
CHAR_LENGTH(文字列)
実際にSELECT文で、特定のカラムの文字数を取得してみましょう。
-- post_titleの文字数を取得 SELECT post_title, CHAR_LENGTH(post_title) FROM titles;
実行結果は次のとおりです。
DockerでMySQLを使う方法 17 MySQLとは 7 SQLとはなにか 8
大文字に変換 UPPER()
文字列を大文字に変換して取得するには UPPER() を使います。
UPPER(文字列)
実際にSELECT文で、特定のカラムの文字列を大文字に変換して取得してみましょう。
-- post_titleの文字列を大文字に変換して取得 SELECT post_title, UPPER(post_title) FROM titles;
実行結果は次のとおりです。
post_title UPPER(post_title) DockerでMySQLを使う方法 DOCKERでMYSQLを使う方法 MySQLとは MYSQLとは SQLとはなにか SQLとはなにか
このとおり日本語には影響せず、アルファベットの小文字のみが大文字に変換されます。
文字列に使える関数の一覧
このほかにもMySQLには文字列に使える関数がいくつか用意されています。
詳しくは公式リファレンスマニュアルに記載されていますので確認してみて下さい。
※MySQL5.6と8.0で使える関数が異なる点に注意しましょう。