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)で数値型に変換することが可能です。

この記事を書いている人
株式会社ディープ
名前足立拓也

メールアドレスadachi@deep-deep.jp

関連記事

最近の記事

  1. ドメインについて
  2. WP:WordPress(ワードプレス)
  3. URL設計(URLデザイン)
  4. URL「ディレクトリ名」と文字アンダースコア(_)とハイフン(-)
  5. SEO対策(外部ファイルの読み込み)
  6. URL リダイレクト
  7. インデックスされない
  8. 内部対策は必要?
  9. CMS(シーエムエス)
  10. SEO業者は必要?

Twitter

アーカイブ

PAGE TOP