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
パイプ連結演算子を有効にしなかった場合、警告付きで予期しない結果が発生した可能性があります。