我需要查询数据库中只包含特定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/

10-12 12:41
查看更多