MySQL(マイエスキューエル)

データベース

【MySQL】CONCAT関数の便利な使い方

MySQLのCONCAT関数についてまとめてみました。

CONCAT関数で文字列を結合

まず、CONCAT関数とは何?という話ですが、
文字列を結合するための関数です。

例えば、

SELECT CONCAT('MySQL', 'の', 'CONCAT関数')

というSQLクエリを実行すると、
MySQLのCONCAT関数」という文字列が返ってきます。

もちろん、上記のような感じで文字列を結合させるだけであれば、
PHP側でやれ!という話になるので、このような使い方はあまりしません。

 

では、どのような使い方をするのかというと、
例えば、カラムと文字列を結合したい場合や、複数のカラム同士を結合するのに使用します。

例:
ユーザー管理テーブル(テーブル名「user」)に、
・年を保持している項目「カラム名:year」
・月を保持している項目「カラム名:month」
・日を保持している項目「カラム名:day」
を持っているとした場合、

SELECT CONCAT(year, month, day) FROM user

を実行することで、
20190608」というように年月日の値を結合して結果を得ることが出来ます。

 

また、

SELECT CONCAT(year, '-', month, '-', day) FROM user

とすれば、
2019-06-08」といった結果を得ることも出来ます。

 

さらに、

SELECT CONCAT('こちらのユーザーは', year, '年', month, '月', day, '日に登録されました。') FROM user

とすれば、
こちらのユーザーは2019年06月08日に登録されました。」といった結果を得ることも出来ます。

便利ですね!

因みに、通常は年月日を別々のカラムに持たせるということはあまりしないので、
あくまで、このような使い方が出来るという参考にして貰えればと思います。

 

CONCAT関数で結合した値で比較を行ってレコードを取得

CONCAT関数で結合した値で比較を行、該当データ(レコード)のみを取得するということも可能です。

上記のテーブルを例にすると、

SELECT user_name FROM user WHERE CONCAT(year, month, day) = '20190618'

とすることで、
「20190618」に登録されたデータのみを取得するということが可能です。

また、

SELECT user_name FROM user WHERE CONCAT(year, month, day) < '20190618'

とすることで、
「20190618」よりも前に登録したデータのみを取得するということも可能です。

因みに、
数値で比較を行うような場合には、
CAST関数で数値に変換しておいた方がいいかもしれないですね。

SELECT user_name FROM user WHERE CAST(CONCAT(year, month, day) AS SIGNED) > 20190618

みたいな感じで。

文字列のキャストにはCAST関数を使用します。
例えば、(カラム AS SIGNED)で数値型に変換することが可能です。

WordPress短期学習プログラム

関連記事

  1. MySQL(マイエスキューエル)
  2. Database(DB:データベース)

    データベース

    DBのバックアップ

    弊社も今日で仕事納めです。休暇中に何かあると恐いの…

  3. MySQL(マイエスキューエル)

    データベース

    【MySQL】オーバーヘッド!!

    弊社テスト環境のphpMyAdminの画面をなんとなく眺めていると、…

  4. MySQL(マイエスキューエル)

    データベース

    Error in processing request エラーコード:403 エラーテキスト:For…

    phpMyAdminの画面から不要になったデータベースを削除しようとし…

  5. Database(DB:データベース)

    データベース

    PostgreSQLをインストール

    PostgreSQLのインストールを開始案件でPost…

  6. MySQL(マイエスキューエル)

    データベース

    MySQLのCASE文

    現在、簡単な掲示板のようなシステムを作成しているのですが、その際に…

最近の記事

  1. Technology-Connection-Net
  2. ドメインにハイフンを使うのは日本人だけ?
  3. SSL(HTTPS)
  4. ドメインについて
  5. WP:WordPress(ワードプレス)
  6. ドメイン(domain)
  7. JPドメイン
  8. 高速(スピード)
  9. ブログアクセス
  10. 高速(スピード)
PAGE TOP