sql >> Databáze >  >> RDS >> Mysql

Jak upozornit MySQL na vícebajtové znaky v LIKE a REGEXP?

UPRAVENO za účelem začlenění opravy platné kritiky

Použijte HEX() funkci vykreslit vaše bajty do šestnáctkové soustavy a pak použijte RLIKE na to, například:

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

Liché znaky unicode se vykreslují konzistentně podle jejich hexadecimálních hodnot, takže hledáte přes standardní znaky 0-9A-F.

Toto funguje i pro "normální" sloupce, jen to nepotřebujete.

p.s. @Kierenův (platný) bod adresovaný pomocí rlike pro vynucení párů znaků



  1. Vícenásobný výběrový dotaz PHP PDO konzistentně vynechává poslední sadu řádků

  2. přizpůsobit pager v psql

  3. Je nutné zapsat ROLLBACK, pokud dotazy selžou?

  4. Jak uniknout jedné uvozovce na serveru SQL Server?