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