「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

【講演資料を公開】9/28 ビッグデータ処理のデータベースとして MySQL HeatWave が最適な理由 〜AWS Aurora/Redshift、GCP BigQuery との性能&コスト比較〜(2022年10月28日 09:15)

2022年09月28日(金)16:00~16:55 「ビッグデータ処理のデータベースとして MySQL HeatWave が最適な理由 〜AWS Aurora/Redshift、GCP BigQuery との性能&コスト比較〜」 と題したウェビナーが開催されました。 皆様のご参加、誠にありがとうございました。 当日の資料は以下から無料でご覧いただけます。 ご興味のある企業さま、ぜひご...

イベント情報

セミナー講演資料

無料資料プレゼント

2021/03/04 セキュリティDAYS Keyspider資料

講演資料を見るには、 プライバシーポリシーに同意して、送付先メールアドレスをご入力しご請求ください。

またご入力いただきました情報は、当該資料の作成・提供企業とも共有させていただき、当社及び各社のサービス、製品、セミナー、イベントなどのご案内に使用させていただきます。

本資料を見るには次の画面でアンケートに回答していただく必要があります。



セミナー講演資料公開中

ハイブリッドワークにおける電話の新しいカタチ ~セールスプロセスを最適化する次世代クラウドビジネスフォン~

システム責任者が知っておくべき 「MySQLの高可用性/HA構成」 の選択肢と比較 〜 MySQLデータベースのダウンタイム“ゼロ”を目指す〜

【企業ネットワーク向け】ローカルブレイクアウト、適用できないSaaSはありませんか?通信速度や運用に課題はありませんか? 〜LBOに最適なネットワーク機器や管理ツールによる解決策をご提案〜

  • オープソース書籍(サイド)
  • OSSNEWSに広告を掲載しませんか?

facebook

twitter