MySQL字符串仅包含某些unicode字符

时间:2014-03-22 02:59:36

标签: mysql regex unicode

我需要在数据库中查询只包含一组Unicode日文字符的条目,而不需要其他内容。

我已尝试使用WHERE word RLIKE '^([あいうえお])+$',但由于MySQL正则表达式缺乏Unicode支持,因此不能与日语一起使用。

还有其他方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:3)

MySQL将每个字符视为字节序列,因此为0xE3,0x81,0x82,而您的[あいうえお]实际上正在寻找任何字节序列0xE3,0x81,0x82,0x84,0x86 ,0x88和0x8A。这将匹配罚款,但它也将匹配与列表中的单个字符不对应的其他序列,例如0xE3,0x82,0x81,即

当正则表达式引擎将每个字符视为多个符号时,另一种说[あいうえお]仍然有用的方法是(あ|い|う|え|お)

SELECT 'あ' RLIKE '^([あいうえお])+$';    -- 1
SELECT 'め' RLIKE '^([あいうえお])+$';    -- 1
SELECT 'あ' RLIKE '^(あ|い|う|え|お)+$';  -- 1
SELECT 'め' RLIKE '^(あ|い|う|え|お)+$';  -- 0