Developer

【SQL基礎】文字列関数
2021.02.28
Lv1

【SQL基礎】文字列関数

本項は文字列関数ついて説明していきます。


文字列関数とは

関数には、数値を扱いものだけでなく文字列を扱う文字列関数も用意されています。
文字列の結合や置換、切り取りなどを行うことができます。

それでは実際にいくつかの文字列関数を見ていきましょう。
また、使用するテーブルの内容は以下になります。


CONCAT関数(文字列の結合)

処理の結果に合わせて、文字列を組み合わせてメッセージを作成したいなど、
文字列を結合したい場合は、CONCAT関数を使用すると文字列を結合することがきます。
書式は下記になります。

CONCAT("文字列1", "文字列2", … , "文字列n")

では、実際に使ってみましょう。

SELECT CONCAT(name, "は", address, "に住んでいます")
FROM teachers;

テーブルのnameカラムとaddressカラム、リテラル文字列を結合させてメッセージを作成することができました。


CHAR_LENGTH関数(文字数の取得)

MySQLでは、CHAR_LENGTH関数を使うと、引数で渡した文字列の文字数を取得することが来ます。
書式は下記になります。

CHAR_LENGTH("文字列")

実際に文字数を取得してみましょう。

SELECT name, CHAR_LENGTH(name)
FROM teachers;

対象の文字数が取得できたことが確認できました。


REPLACE関数(文字列の置換)

文章中の一部の文字列を全て指定した文字列に置換したい場合は、REPLACE関数を使用します。
例えば、「cap」の「a」を「u」に置き換えて「cup」にすることなどができます。
書式は下記になります。

REPLACE("置換対象の文字列", "置換前の文字列", "置換後の文字列");

では、実際に使ってみましょう。

SELECT name, REPLACE("私の名前はnameです", "name", name)
FROM teachers;

置換対象文字列のname部分をteachersテーブルのnameカラムの内容に置き換えられたことができました。


SUBSTRING関数(文字列の切り取り)

文章中の一部分の文字列だけを取得したい場合は、SUBSTRING関数を使用します。
書式は下記になります。

SUBSTRING("文字列", 開始位置)
-- または
SUBSTRING("文字列" FROM 開始位置)
-- または
SUBSTRING("文字列", 開始位置, 文字数)
-- または
SUBSTRING("文字列" FROM 開始位置 FOR 文字数)

「文字列」の先頭から「開始位置」文字目から「文字数」分を切り取ります。
文字数を指定しない場合は、「文字列」の最後まで切り取ります。

まずは、teachersテーブルのbirthdayカラムから月日部分のみ切り取ってみましょう

SELECT birthday, SUBSTRING(birthday, 6)
FROM teachers;

月日の部分は先頭から6文字目から始まって最後まで、開始位置は6を設定し文字数は省略しています。
次いで、西暦の部分のみ切り取ってみましょう。

SELECT birthday, SUBSTRING(birthday, 1, 4)
FROM teachers;

西暦の部分は、文字列の先頭から4文字なので、開始位置は1、文字数は4を設定します。


今回の学習ポイント

・文字列関数は文字列の操作に関わる関数のこと。
・REPLACE関数では、文字列中に出現するすべての「置換前の文字列」が「置換後の文字列」に置換される。
・SUBSTRING関数に渡す引数の「文字数」は省略できる。


練習問題

問題として使用するデータは「SQL練習問題」のものを使用しています。
以下からダウンロード可能です。
また、ダウンロードしたら以下のようにしてworldcup2014データベースを作成し、インポートしてください。
※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。

worldcup2014.zip

[sql] CREATE DATABASE worldcup2014;

use worldcup2014

source C:\worldcup2014.sql
[/sql]

1.クロアチア(players.country_id = 4)の選手で名前(players.name)に「チ」が含まれる選手の名前の「チ」を「ち」にに置き換えて表示してください。

答え
[sql] SELECT REPLACE(name, "チ", "ち")
FROM players
WHERE country_id = 4 AND name like "%チ%";
[/sql]

「チ」を「ち」に置き換えるのでREPLACE関数を使用します。

 

 

連載目次リンク

SQL基礎 連載目次

関連する連載リンク

SQL練習問題 一覧まとめ