MariaDB (MySQL) select時に文字列など連結(追加)した結果を返すconcat(a,b,c)

mariadb select concat mariadb

いつもPHPやnode.jsで取得してからfor文で要素に追加していた自分が情けない、外出自粛により在宅ワークな筆者です。

PHP ExcelDataTablesライブラリを使って、selectしスクレイピングしたデータをそのままExcelDataTablesに渡したかったんですが、エクセルのある列(column)には追記したい文字列があったんですね。

select後のデータを、 その追加文字列の為に foreach()で回すなんて!と思い、ググっていたらconcat()で解決できると・・・

そもそものググるキーワード選定が難しい・・
mysql select時に文字列追記 
で出てきました。思ったことを検索キーワードに書けばいいんですが、まだまだですね自分・・

スポンサーリンク

1.concat()を使う

Concatenate=連結する でconcat()ですね。
カンマ,区切りでテーブルのカラムでも良いし、追記したい文字列でもOKです。

下記な感じでvcardテーブルにはid,no,name,…があったとして、no=名前 というように出してくれます。


select id, concat(no,'=',name) as yourname from vcard;

id, yourname
1   10=山田
2   8=林

これを以前まではPHPとかで、リスト取得してforeach()で回していました・・

$datalist = $db->get_list();
foreach( $datalist as $d ){
  $d->yourname = "{$d->no}={$d->name}";
}

1.1 joinしたテーブルも勿論使える

他のテーブルをjoinしconcat()することも勿論出来ます。


select r.id as id, concat(r.name, s.sub) as storename from ranktbl r left join store s on r.id=s.rankid where ...;

便利。データベースの関数は人がこうだったらいいなと思うことは大体網羅されていますよね、そりゃ・・ドキュメント改めて見てみようと思いました。

2. どのくらい負荷が増えるかは未計測

とは言え、DB側の処理が増えるので負荷が多少なりともかかるかと。
すみません、未計測です。

9.参考リンク

MySQLで使える文字列結合方法 | サービス | プロエンジニア
プロエンジニアの【MySQLで使える文字列結合方法】ページです。エンジニアの正社員求人情報、フリーランス案件情報を探すならインターノウスのプロエンジニアへ!

コメント

タイトルとURLをコピーしました