我想从符合格式的表中返回条目:
前缀+可选空格+泰国数字
使用ยก作为前缀进行测试我使用以下SQL
SELECT term
FROM entries
WHERE term REGEXP "^ยก[\s]*[๐-๙]+$"
这会返回9个条目,其中4个条目没有正确的前缀,并且没有一个以数字结尾。
ยกนะ
ยกบัตร
ยกมือ
ยกยอ
ยกยอด
ยกหยิบ
ยมทูต
ยมนา
ยมบาล
ยมล
它不会返回
ยก ๑
ยก ๒
我知道在数据库中,是我想要的条目。
我对这一切都很陌生。我做错了什么?
FWIW,这是针对MySQL数据库的,一切都是Unicode格式。
由于
答案 0 :(得分:0)
引自MySQL docs:
REGEXP和RLIKE运算符以字节方式工作,因此它们不是多字节安全的,并且可能会产生多字节字符集的意外结果。此外,这些运算符通过字节值比较字符,即使给定的排序规则将重音字符视为相等,重音字符也可能无法比较。
由于上述原因,似乎MySQL的REGEXP
无法正确处理[๐-๙]
范围。
答案 1 :(得分:0)
我使用utf8_general_ci并尝试匹配
ยกนะ
与" ^ยก[\ s] * [0-9] + $"但是我没有将正则表达式改为
"^ยก[ ]*[๐-๙]+$"
,它可以匹配
ยกนะ
ยก ๑
问题可能是字符编码。