こんにちは。
陽気なシステム屋の一員のシホンヌです。
システム屋を何年もやっていると、色々なDBを使用して開発をします。
初めて使用したDBはSQLServerで、文字列の連結をよく行っていました。
SELECT カラムA + カラムB FROM テーブル WHERE 条件
このような感じで、テーブルから指定した条件の項目を「+」で連結することにより欲しい情報を取得していました。
ところが次にOracleを使用した時、文字列の連結が「||」で行われていました。
初めて見た時はなんじゃこりゃと思いましたが、DBによってそれぞれ特徴があることを知り、覚えました。
そして最近、MySQLを使用し、何年もOracleに慣れていたせいもあってウッカリ||演算子を使用して文字列を連結したところ、変な結果が…。
調べたところ、MySQLは文字列の連結に「CONCAT関数」を使用するとのことでした。
Oracleも「CONCAT関数」を使用しての文字列連結が可能とのこと。
おお、なるほど!
今までOracleで沢山のSQLを見てきましたが、CONCAT関数を使用しての文字列連結は見た記憶がありません。
あったのかも知れませんが覚えていません。
||演算子を使用するのがメジャーなのでしょうかね?
あるサイトで、||演算子はMySQLは論理和(OR)として解釈されるため文字列連結の用途には使用できないとありました。
ところがよくよく調べると…ありました!
MySQLで||演算子を文字列連結として使えるようになる方法が!
sql_modeにPIPES_AS_CONCATという定数を設定すればいいだけだそうです。
実際、MySQLで確認したいデータを取得するSQL文を発行する前に
set @@session.sql_mode=’PIPES_AS_CONCAT’;
と設定してから||演算子を使用したところ、文字列連結として使えるようになりました。
この設定はMySQLを再起動すると消えてしまう為、常にこの設定で使用したい場合は設定ファイルに記載しておいた方が良いそうです。
なるほどなるほど~。
Webサイト開発実績はこちら。