sql >> Database >  >> RDS >> Mysql

Hoe MySQL bewust te maken van multi-byte tekens in LIKE en REGEXP?

BEWERKT om oplossing voor geldige kritiek op te nemen

Gebruik de HEX() functie om uw bytes hexadecimaal weer te geven en vervolgens gebruik RLIKE daarover bijvoorbeeld:

select * from mytable
where hex(ipa) rlike concat('(..)*', hex('needle'), '(..)*'); -- looking for 'needle' in haystack, but maintaining hex-pair alignment.

De oneven Unicode-tekens worden consistent weergegeven met hun hexadecimale waarden, dus u zoekt over standaard 0-9A-F-tekens.

Dit werkt ook voor "normale" kolommen, je hebt het alleen niet nodig.

p.s. Het (geldige) punt van @Kieren geadresseerd met rlike om tekenparen af ​​te dwingen



  1. Een kml-bestand maken uit een mysql-database met php

  2. TRIGGER of MULTI-inzetstuk

  3. Oracle - Gematerialiseerde weergave nog steeds toegankelijk tijdens volledige vernieuwing. Hoe werkt dit?

  4. PHP-verbinding mislukt:SQLSTATE [HY000] [2002] Verbinding geweigerd