Facebook Twitter Google Maps RSS
Home 開発全般 文字列の連結
formats

文字列の連結

こんにちは。
陽気なシステム屋の一員のシホンヌです。

システム屋を何年もやっていると、色々な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サイト開発実績はこちら

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*