MySQL内部関数文字列比較関数、ケース依存性
- 文字列の結合〔CONCAT()〕
- 区切り文字で文字列を結合〔CONCAT_WS()〕
- このページで使用しているサンプルデータ
文字列の結合
CONCAT()
unknown
CONCAT(str1, str2, ... )
引数を連結した文字列を返します。 引数にNULLが含まれる場合はNULLを返します。 引数に数値を指定した場合は、同等の文字列に変換されます。
mysql> SELECT CONCAT('PHP', '&', 'JavaScript', 'Room') AS SiteName; Enter +--------------------+ | SiteName | +--------------------+ | PHP&JavaScriptRoom | +--------------------+ 1 row in set (0.00 sec) # tbl_Addressテーブルの内容 mysql> SELECT * FROM tbl_Address; Enter +--------+----------+----------+-------------------------+ | UserID | Zip | Ken | Addr | +--------+----------+----------+-------------------------+ | U001 | 155-0031 | 東京都 | 世田谷区下北1-1-1 | | U002 | 160-0023 | 東京都 | 新宿区西新宿9-8-7 | | U003 | 079-1274 | 北海道 | 赤平市エルム町4-2-5 | | U004 | 061-3254 | 北海道 | 石狩市樽川3-1-1 | | U005 | 155-0031 | 神奈川県 | 横浜市緑区いぶき野2-100 | | U006 | 155-0031 | 神奈川県 | 横浜市緑区白山10-33-2 | | U007 | 155-0031 | 沖縄県 | 石垣市石垣9000 | +--------+----------+----------+-------------------------+ 7 rows in set (0.00 sec) # KenフィールドとAddrフィールドを結合し、Addressという別名で取得 mysql> SELECT UserID, CONCAT(Ken, Addr) AS Address Enter -> FROM tbl_Address ORDER BY UserID; Enter +--------+---------------------------------+ | UserID | Address | +--------+---------------------------------+ | U001 | 東京都世田谷区下北1-1-1 | | U002 | 東京都新宿区西新宿9-8-7 | | U003 | 北海道赤平市エルム町4-2-5 | | U004 | 北海道石狩市樽川3-1-1 | | U005 | 神奈川県横浜市緑区いぶき野2-100 | | U006 | 神奈川県横浜市緑区白山10-33-2 | | U007 | 沖縄県石垣市石垣9000 | +--------+---------------------------------+ 7 rows in set (0.00 sec)
区切り文字で文字列を結合
CONCAT_WS()
unknown
CONCAT_WS(separator, str1, str2, ... )
この関数は、区切り文字が付いたCONCAT()関数の特殊型です。 区切り文字separatorで第2引数以降の引数を連結します。 区切り文字separatorがNULLの場合、NULLが返ります。
第2引数以降の引数にNULLが指定されている場合はNULLをスキップして結合されます。 MySQL 4.1.1 より前のバージョンの場合は、NULLだけでなく、空文字列もスキップされます。
mysql> SELECT CONCAT_WS(',', 'FirstName', 'SecondName', 'LastName') Enter -> AS FullName; Enter +-------------------------------+ | FullName | +-------------------------------+ | FirstName,SecondName,LastName | +-------------------------------+ 1 row in set (0.00 sec) # 第2引数以降の引数が NULL の場合は、スキップされます mysql> SELECT CONCAT_WS(',', 'FirstName', NULL, 'LastName') AS FullName; Enter +--------------------+ | FullName | +--------------------+ | FirstName,LastName | +--------------------+ 1 row in set (0.00 sec)
# tbl_Addressテーブルの内容 mysql> SELECT * FROM tbl_Customer; Enter +--------+-----------+----------+------+------+ | UserID | FirstName | LastName | Sex | Age | +--------+-----------+----------+------+------+ | U001 | 花子 | 鈴木 | f | 21 | | U002 | 太郎 | 田中 | m | 30 | | U003 | 一郎 | 鈴木 | m | 45 | | U004 | 萌子 | 山口 | f | 18 | | U005 | 愛 | 森永 | f | 21 | | U006 | 太郎 | 鈴木 | m | 22 | | U007 | 花子 | 佐藤 | f | 35 | +--------+-----------+----------+------+------+ 7 rows in set (0.00 sec) # LastNameフィールドとFirstNameフィールドを全角スペースで結合し、 # FullNameという別名で取得 mysql> SELECT UserID, CONCAT_WS(' ', LastName, FirstName) AS FullName Enter -> FROM tbl_Customer ORDER BY UserID; Enter +--------+------------+ | UserID | FullName | +--------+------------+ | U001 | 鈴木 花子 | | U002 | 田中 太郎 | | U003 | 鈴木 一郎 | | U004 | 山口 萌子 | | U005 | 森永 愛 | | U006 | 鈴木 太郎 | | U007 | 佐藤 花子 | +--------+------------+ 7 rows in set (0.00 sec)
このページで使用しているサンプルデータ
unknown
サンプルデータ
# テーブル(tbl_Address)作成 CREATE TABLE IF NOT EXISTS tbl_Address( UserID VARCHAR(4) NOT NULL PRIMARY KEY, Zip CHAR(9) DEFAULT NULL, Ken CHAR(10) DEFAULT NULL, Addr VARCHAR(200) DEFAULT NULL ); # データ挿入 INSERT INTO tbl_Address (UserID,Zip,Ken,Addr) VALUES ('U001','155-0031','東京都','世田谷区下北1-1-1'), ('U002','160-0023','東京都','新宿区西新宿9-8-7'), ('U003','079-1274','北海道','赤平市エルム町4-2-5'), ('U004','061-3254','北海道','石狩市樽川3-1-1'), ('U005','155-0031','神奈川県','横浜市緑区いぶき野2-100'), ('U006','155-0031','神奈川県','横浜市緑区白山10-33-2'), ('U007','155-0031','沖縄県','石垣市石垣9000');