我需要查询数据库中只包含特定Unicode日文字符集而不包含其他字符的条目。
我试过使用WHERE word RLIKE '^([あいうえお])+$'
但这在日语中不起作用,因为MySQL的regex中缺少Unicode支持。
有没有其他方法可以做到这一点?
最佳答案
MySQL将每个字符视为一个字节序列,因此あ
是0xE3、0x81、0x82,而[あいうえお]
实际上是在查找任何字节序列0xE3、0x81、0x82、0x84、0x86、0x88和0x8A。这将很好地匹配あ
,但它也将匹配与列表中单个字符不对应的其他序列,例如0xE3、0x82、0x81め
。
当regex引擎将每个字符视为多个符号时,另一种表示[あいうえお]
的方法仍然有效。
SELECT 'あ' RLIKE '^([あいうえお])+$'; -- 1
SELECT 'め' RLIKE '^([あいうえお])+$'; -- 1
SELECT 'あ' RLIKE '^(あ|い|う|え|お)+$'; -- 1
SELECT 'め' RLIKE '^(あ|い|う|え|お)+$'; -- 0
关于mysql - MySQL字符串仅包含某些Unicode字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22572895/