我在 MySQL 中有一个 UTF8 表,其中包含名称和所有类型的文本(数字、大写、希腊语、西克里尔文等)。
---------------
ID Name
---------------
001 Jane Smith
002 John Doe
003 Джемз Смис
004 Пэтра Смис
005 "Groove" Holme
006 99er Dude
如何仅选择西里尔字母名称? (记录 003 和 004)
编辑
感谢下面的回答,这看起来是正确的,但没有用。更多的研究在文档中发现了这一点:
编辑编辑,一个解决方案
我通过在我的数据库中添加一个额外的字段来解决这个问题,该字段存储脚本类型,例如 Cyrillic、Thai 等。然后在 PHP 中运行一个批处理,检测脚本并将信息存储在数据库中。
要检测 PHP 中的脚本,请使用 Unicode 正则表达式函数。请参阅此页面:
http://www.regular-expressions.info/unicode.html
最佳答案
我不知道它是否涵盖所有字符,但您应该可以使用它:
SELECT * FROM table WHERE Name REGEXP '[Α-Ωα-ωА-Яа-я]'
这将返回包含至少一个西里尔字母或希腊字母的所有条目
编辑
检查 OP 关于 REGEXP/RLIKE 以字节方式工作的问题中的“警告”,因此它们可能不适用于多字节字符集。
关于mysql:在数据库中查找西里尔文或希腊文,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8807124/