如何在SQL查询中检测泰语

时间:2013-09-19 06:38:39

标签: mysql sql

我在表中有一个字符串列,其中一些字符串中包含泰语,所以泰语字符串的示例是:

อักษรไทย

有没有这样的方法在列中查询/查找这样的字符串?

2 个答案:

答案 0 :(得分:3)

您可以搜索以泰语Unicode块中的字符开头的字符串(即在U + 0E01和U + 0E5B之间):

WHERE string BETWEEN 'ก' AND '๛'

当然,这不包括以其他角色开头的字符串,并继续包含泰语,例如以数字开头的字符串。为此,您必须使用性能低得多的正则表达式:

WHERE string RLIKE '[ก-๛]'

请注意手册中的警告:

  

警告

     

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

答案 1 :(得分:0)

您可以在字符集之间进行一些来回转换。

where convert(string, 'AL32UTF8') =
      convert(convert(string, 'TH8TISASCII'), 'AL32UTF8', 'TH8TISASCII' )
如果string仅由thai和ASCII组成,则

将为true,因此如果添加

AND convert(string, 'AL32UTF8') != convert(string, 'US7ASCII')

你过滤掉仅由ASCII制成的字符串,你就得到了由泰语组成的字符串。

不幸的是,如果您的字符串包含ASCII和泰语以外的内容,则无法使用。

注意:某些转换可能是多余的,具体取决于您的数据库默认编码。