MySQLは、パイプ連結演算子(||)の使用をサポートしています。 )そのオペランドを連結するため。ただし、最初に有効にする必要があります。
デフォルトでは、MySQLは||を扱います 論理的なORとして オペレーター(この処理は現在非推奨ですが)。ただし、ANSI規格では、|| 連結演算子です。おそらく、パイプ連結演算子をすでに使用しているコードがあり、CONCAT()を使用するようにコードを調べて変更したくない場合があります。 機能。
幸い、MySQLには、論理的なORとして扱うかどうかを指定する機能があります。 演算子または連結演算子。
||を有効にできます sql_modeで該当するオプションを設定することにより、連結演算子として 。
2つのオプションがあります:
-
PIPES_AS_CONCATを追加しますsql_modeに -
sql_modeを設定しますANSIへ 。
オプション1
ここで、PIPES_AS_CONCATを追加します 私のsql_modeに :
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
sql_mode = 'PIPES_AS_CONCAT'に行ったばかりだったのは事実です 、しかし私はすべての既存のオプションを失っていただろう。上記の手法を使用すると、既存のオプションが失われることはありません。
オプション2
これを行う別の方法は、sql_modeを設定することです。 ANSIへ :
SET sql_mode='ANSI';
ANSI modeは、構文と動作を変更して、標準SQLにより厳密に準拠します。
sql_modeを確認してください
sql_modeを確認できます このように:
SELECT @@sql_mode; 結果:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI
これは、ANSIに変更した後に得られる結果です。 モード。 PIPES_AS_CONCATが表示されます オプションのリストに含まれています。
連結の例
sql_modeを設定した後 上記の手法のいずれかを使用して、||を使用できるようになりました パイプ連結演算子として:
SELECT 'Homer' || 'Symptom'; 結果:
HomerSymptom
パイプ連結演算子を有効にしなかった場合、警告付きで予期しない結果が発生した可能性があります。