Standaardsortering van MySQL is latin1_swedish_ci
voor 8.0
en utf8mb4_0900_ai_ci
sinds 8.0
. Dus niet-binaire tekenreeksvergelijkingen zijn standaard hoofdletterongevoelig in gewone kolommen.
Echter, zoals vermeld in MySQL-handleiding voor JSON-type
Daarom bevindt uw JSON-waarde zich in utf8mb4_bin
sortering en u moet een hoofdletterongevoelige sortering toepassen op beide operands om de vergelijking hoofdletterongevoelig te maken.
Bijv.
WHERE username COLLATE XXX LIKE '...'
waar XXX
moet een utf8mb4-sortering zijn (zoals de utf8mb4_general_ci
je hebt genoemd.).
Of
WHERE username LIKE '...' COLLATE YYY
waar YYY
moet een sortering zijn die overeenkomt met de tekenset van uw verbinding.
Voor gelijkheidsvergelijking moet u de JSON-waarde ongedaan maken
met JSON_UNQUOTE()
of de extractie-operator zonder aanhalingstekens ->>
Bijv.
JSON_UNQUOTE(JSON_EXTRACT(payload, '$.username'))
Of gewoon
payload->>'$.username'
Het JSON-type en de functies werken heel anders dan gewone gegevenstypen. Het lijkt erop dat je nieuw bent. Ik raad je dan ook aan om de handleiding aandachtig te lezen voordat je deze in een productieomgeving plaatst.