「MySQL」参考情報 「第11回MySQLの文字列結合」+「第12回MySQLの日付フォーマット」として、「文字列結合」「文字列結合の注意点」「日付(時刻)フォーマット」「日付(時刻)関数」について紹介。

「MySQL」参考情報 「第11回MySQLの文字列結合」+「第12回MySQLの日付フォーマット」

「MySQL」参考情報 「第11回MySQLの文字列結合」+「第12回MySQLの日付フォーマット」として、「文字列結合」「文字列結合の注意点」「日付(時刻)フォーマット」「日付(時刻)関数」について紹介。

■関連する比較ページ

「MySQL」参考情報 第11回 MySQLの文字列結合

■【1】文字列結合

MySQLで文字列結合処理を行う方法について紹介します。

サンプルDBテーブル

刀剣DB(ToukenDB)の刀剣情報(Touken)テーブルに以下のレコードが格納されているとします。

id(刀剣ID)name(刀剣名)name_kana(刀剣名カナ)
1陸奥守吉行ムツノカミヨシユキ
2三日月宗近ミカヅキムネチカ
3燭台切光忠ショクダイキリミツタダ

MySQLの機能を使用して、『刀剣ID(1)は、陸奥守吉行(ムツノカミヨシユキ)です』と出力するように文字列結合を行います。

CONCAT

「CONCAT」で文字列を結合できます。

『mysql> SELECT CONCAT("刀剣ID(", id, ")は、", name, "(", name_kana, ")です") FROM Touken』

「刀剣ID(1)は、陸奥守吉行(ムツノカミヨシユキ)です」
「刀剣ID(2)は、三日月宗近(ミカヅキムネチカ)です」
「刀剣ID(3)は、燭台切光忠(ショクダイキリミツタダ)です」

CONCAT_WS

「CONCAT_WS」は、指定文字を間に入れて、文字列を結合できます。

第1引数の文字が、間に挟み込まれます。

『mysql> SELECT CONCAT_WS(" ", name, name_kana) FROM Touken』

「陸奥守吉行 ムツノカミヨシユキ」
「三日月宗近 ミカヅキムネチカ」
「燭台切光忠 ショクダイキリミツタダ」

パイプ(||)

「パイプ(||)」でも、文字列を結合できます。

※SQL_MODEに「PIPES_AS_CONCAT」の設定が必要です。

『mysql> SET SQL_MODE="PIPES_AS_CONCAT" 』
『mysql> SELECT "刀剣ID(" || id || ")は、" || name || "(" || name_kana || ")です" FROM Touken』

「刀剣ID(1)は、陸奥守吉行(ムツノカミヨシユキ)です」
「刀剣ID(2)は、三日月宗近(ミカヅキムネチカ)です」
「刀剣ID(3)は、燭台切光忠(ショクダイキリミツタダ)です」

■【2】文字列結合の注意点

CONCAT(CONCAT_WS)使用時に、NULLが含まれる場合

刀剣DB(ToukenDB)の刀剣情報(Touken)テーブルに以下のレコードが格納されているとします。

id(刀剣ID)name(刀剣名)name_kana(刀剣名カナ)
1陸奥守吉行ムツノカミヨシユキ
2NULLミカヅキムネチカ
3燭台切光忠NULL

この状態で、上記と同じように、CONCATで文字列結合を行います。
『mysql> SELECT CONCAT("刀剣ID(", id, ")は、", name, "(", name_kana, ")です") FROM Touken』
「刀剣ID(1)は、陸奥守吉行(ムツノカミヨシユキ)です」
「」←NULL
「」←NULL
CONCATでの文字列結合対象の中にNULLが含まれていると、全体がNULLになってしまいます。

「IFNULL」を使用すると、NULLを空白文字に変換することで回避できます。
『mysql> SELECT CONCAT("刀剣ID(", id, ")は、", IFNULL(name, ""), "(", IFNULL(name_kana, ""), ")です") FROM Touken』
「刀剣ID(1)は、陸奥守吉行(ムツノカミヨシユキ)です」
「刀剣ID(2)は、(ミカヅキムネチカ)です」
「刀剣ID(3)は、燭台切光忠()です」

「MySQL」参考情報 第12回 MySQLの日付フォーマット

■【1】日付(時刻)フォーマット

テーブル内に格納されている日時カラムデータを出力する際には、さまざまなフォーマットを指定できます。

主なフォーマット
日時単位形式出力例書式
西暦4桁2016%Y
西暦2桁16%y
ゼロ埋め05%m
英名May%M
ゼロ埋め07%d
曜日英名Tuesday%W
24時間形式ゼロ埋め09%H
ゼロ埋め09%i
ゼロ埋め09%S
DATE_FORMAT

DATE_FORMATを使用すると、フォーマット指定出力できます。

現時刻を表示する例

『mysql> SELECT DATE_FORMAT(now(),'%Y/%m/%d')』

 ↓

「2016/05/17」

サンプルテーブル

Touken(刀剣)テーブルに以下のデータが入っているとします。

id(刀剣ID)name(刀剣名)create_date(登録日時)
1大和守安定2016/05/17 10:05:12
2和泉守兼定2016/05/18 10:15:34
3鶯丸2016/05/19 10:30:56
出力例(1) 漢字表記

『[刀剣名]の登録日時は、[登録日時]です。』のように出力します。

『mysql> SELECT CONCAT(name, "の登録日時は、", DATE_FORMAT(create_date,'%Y年%m月%d日 %H時%i分'), "です。") FROM Touken』

  ↓

「大和守安定の登録日時は、2016年05月17日 10時05分です。」
「和泉守兼定の登録日時は、2016年05月18日 10時15分です。」
「鶯丸の登録日時は、2016年05月19日 10時30分です。」

出力例(2) 英語表記

『[刀剣名]の登録日は、[登録日]です。』のように出力します。

『mysql> SELECT CONCAT(name, "の登録日は、", DATE_FORMAT(create_date,'%d %M %Y'), "です。") FROM Touken』

  ↓

「大和守安定の登録日は、17 May 2016です。」
「和泉守兼定の登録日は、18 May 2016です。」
「鶯丸の登録日は、19 May 2016です。」

■【2】日付(時刻)関数

MySQLには、日時に関する便利な内部関数がいろいろと用意されています。これらの関数を利用することで、日時データをフォーマット指定出力する以上の処理を行えます。

主な関数
関数名機能概要
DAYNAME曜日名(英語)を取得
QUARTER四半期を取得
DATEDIFF日付間の日数計算
DATE_ADD日付加算
DATE_SUB日付減算
SEC_TO_TIME秒→時刻に変換
TIME_TO_SEC時刻→秒に変換

MySQL最新TOPICS

【OSS】オープンソースデータベース利用実態2019年版---多くが複数利用、回答者の59%は「MySQL Communityエディション」を利用(2019年10月08日 10:21)

Open Source Data Management Software Survey オープンソースデータベースサービス提供企業「Percona」は、オープンソースデータベースを使用する人々の使用パターンと意見を収集するために広範な調査を実施した。 調査には85か国から836人が参加した。

  • Zabbixカンファレンス2019
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter