我在 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/

10-12 07:15