我在表中有一个字符串列,其中一些字符串中包含泰语,所以泰语字符串的示例是:
อักษรไทย
有没有这样的方法在列中查询/查找这样的字符串?
答案 0 :(得分:3)
您可以搜索以泰语Unicode块中的字符开头的字符串(即在U + 0E01和U + 0E5B之间):
WHERE string BETWEEN 'ก' AND '๛'
当然,这不包括以其他角色开头的字符串,并继续包含泰语,例如以数字开头的字符串。为此,您必须使用性能低得多的正则表达式:
WHERE string RLIKE '[ก-๛]'
请注意手册中的警告:
警告
REGEXP
和RLIKE
运算符以字节方式工作,因此它们不是多字节安全的,并且可能会产生多字节字符集的意外结果。此外,这些运算符通过字节值比较字符,即使给定的排序规则将重音字符视为相等,重音字符也可能无法比较。
答案 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和泰语以外的内容,则无法使用。
注意:某些转换可能是多余的,具体取决于您的数据库默认编码。