sql >> Databasteknik >  >> RDS >> Mysql

Hur gör man MySQL medveten om multi-byte-tecken i LIKE och REGEXP?

REDIGERAD för att införliva fix till giltig kritik

Använd HEX() funktion för att göra dina bytes till hexadecimala och sedan använd RLIKE på det, till exempel:

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

De udda unicode-tecken återges konsekvent till sina hexadecimala värden, så du söker efter vanliga 0-9A-F-tecken.

Detta fungerar för "normala" kolumner också, du behöver det bara inte.

p.s. @Kierens (giltiga) punkt adresserad med rlike för att upprätthålla char-par



  1. Den parameteriserade frågan förväntar sig parametern som inte angavs

  2. Ska jag bara hålla mig till AWS RDS Automated Backup eller DB Snapshots?

  3. SQL Server:DELETE vs TRUNCATE

  4. SQL datumformat