sql >> データベース >  >> RDS >> Mysql

MySQLでパイプ連結演算子を有効にする方法

    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

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


    1. sqlite(android)でのアクセント付き検索

    2. PostgreSQLのLPAD()関数

    3. 日付範囲の重複チェック制約

    4. PHPコードを使用してMySQLデータベースに画像をアップロードする方法