我在MySQL中有一个包含名称的UTF8表,包含所有类型的文本(数字,大写字母,希腊语,cycrillic等)。
---------------
ID Name
---------------
001 Jane Smith
002 John Doe
003 Джемз Смис
004 Пэтра Смис
005 "Groove" Holme
006 99er Dude
如何只选择西里尔字母? (记录003和004)
修改
感谢下面的答案,看起来它是正确的,但没有用。更多的研究在文档中提到了这一点:
警告
REGEXP和RLIKE运算符以字节方式工作,因此它们是 不是多字节安全的,并且可能会产生多字节的意外结果 字符集。另外,这些运算符比较字符 它们的字节值和重音字符可能无法相等 即使给定的校对将它们视为平等。
编辑编辑,解决方案
我通过在我的数据库中添加一个额外字段来解决这个问题,该字段存储脚本类型,例如Cyrillic,Thai等。然后在PHP中运行一个批处理过程来检测脚本并将信息存储在数据库中。
要在PHP中检测脚本,请使用Unicode正则表达式函数。见本页:
答案 0 :(得分:7)
我不知道它是否涵盖了所有角色,但你应该可以使用它:
SELECT * FROM table WHERE Name REGEXP '[Α-Ωα-ωА-Яа-я]'
将返回包含至少一个西里尔字母或希腊字符的所有条目
修改强>
检查OP关于REGEXP / RLIKE以字节方式工作的问题中的“警告”,这样它们可能不适用于多字节字符集。