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

json_extractを使用したMySQLLIKE

    MySQLのデフォルトの照合は、 latin1_swedish_ciです。 8.0より前 および utf8mb4_0900_ai_ci 8.0以降 。したがって、非バイナリ文字列の比較では、通常の列ではデフォルトで大文字と小文字が区別されません。

    ただし、JSONタイプのMySQLマニュアル で説明されているように

    したがって、JSON値はutf8mb4_binにあります 照合では、大文字と小文字を区別しない照合をいずれかのオペランドに適用して、比較で大文字と小文字を区別しないようにする必要があります。

    例:

    WHERE username COLLATE XXX LIKE '...'
    

    ここで、XXX utf8mb4照合(utf8mb4_general_ciなど)である必要があります あなたが言及しました。)

    または

    WHERE username LIKE '...' COLLATE YYY
    

    ここで、YYY 接続の文字セットに一致する照合である必要があります。

    同等性を比較するには、JSON値の引用を解除 JSON_UNQUOTE()を使用 または引用符で囲まれていない抽出演算子->>

    例:

    JSON_UNQUOTE(JSON_EXTRACT(payload, '$.username'))
    

    または単に

    payload->>'$.username'
    

    JSON型と関数は、通常のデータ型とは動作が異なります。あなたはそれに慣れていないようです。したがって、本番環境に配置する前に、マニュアルを注意深く読むことをお勧めします。



    1. MySQLのパフォーマンス、内部結合、一時およびファイルソートの使用を回避する方法

    2. 行サイズが大きすぎます(> 8126)InnoDBをMyISAMに変更できますか

    3. NodeJsutil.promisifyは関数ではありません

    4. 所有者がOracleでストアドプロシージャを実行する権限を持っているかどうかを確認するにはどうすればよいですか?