0

我想从匹配格式的表中返回条目:

前缀 + 可选空格 + 泰语数字

使用ยก作为前缀进行测试我使用以下SQL

SELECT term
FROM entries
WHERE term REGEXP "^ยก[\s]*[๐-๙]+$"

这将返回 9 个条目,其中 4 个没有正确的前缀,并且没有一个以数字结尾。

ยกนะ
ยกบัตร
ยกมือ
ยกยอ
ยกยอด
ยกหยิบ
ยมทูต
ยมนา
ยมบาล
ยมล

它不返回

ยก ๑
ยก ๒

我知道在数据库中并且是我想要的条目。

我对这一切都很陌生。我究竟做错了什么?

FWIW,这是针对 MySQL 数据库的,所有内容都使用 Unicode。

谢谢

4

2 回答 2

0

我使用 utf8_general_ci 和 try.I 匹配

ยกนะ 

与“^ยก[\s]*[๐-๙]+$”但不匹配ยก๑。所以我将正则表达式更改为

"^ยก[ ]*[๐-๙]+$"

,并且可以匹配

ยกนะ 
ยก ๑

也许问题是字符编码。

于 2014-05-29T03:23:57.123 回答
0

正如MySQL docs所引用的:

REGEXP 和 RLIKE 运算符以字节方式工作,因此它们不是多字节安全的,并且可能会在使用多字节字符集时产生意外结果。此外,这些运算符通过字节值比较字符,即使给定的排序规则将它们视为相等,重音字符也可能不会比较相等。

由于上述原因,MySQL 似乎REGEXP无法正确处理范围。[๐-๙]

于 2014-05-29T03:11:03.650 回答