我需要在数据库中查询只包含一组Unicode日文字符的条目,而不需要其他内容。
我已尝试使用WHERE word RLIKE '^([あいうえお])+$'
,但由于MySQL正则表达式缺乏Unicode支持,因此不能与日语一起使用。
还有其他方法可以实现这个目标吗?
答案 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