2012-01-10 98 views
0

我在MySQL中有一个UTF8表,包含名称,所有类型的文本(数字,大写,希腊语,西里尔等)。mysql:在数据库中找到西里尔文或希腊文文本

--------------- 
ID Name 
--------------- 
001 Jane Smith 
002 John Doe 
003 Джемз Смис 
004 Пэтра Смис 
005 "Groove" Holme 
006 99er Dude 

如何仅选择西里尔文的名字? (记录003和004)

编辑

感谢下面的答案,这看起来似乎是正确的,但没有奏效。更多的研究打开了这个文件中:

警告

在逐个字节的方式正则表达式和RLIKE运营商合作,所以他们 并不多字节安全并可能产生多字节意外结果 字符集。此外,即使给定的归类将它们视为相等,这些运算符也会将它们的字节值和重音字符的字符进行比较,结果为 。

编辑编辑,溶液

我在PHP检测增加额外的场到我的数据库存储脚本类型,如俄语,泰语等,然后一个跑一个批处理过程解决了这个脚本并将信息存储在数据库中。

要在PHP中检测脚本,请使用Unicode正则表达式函数。看到这个页面:

http://www.regular-expressions.info/unicode.html

回答

5

我不知道,如果它涵盖了所有的字符,但你应该能够使用这样的:

SELECT * FROM table WHERE Name REGEXP '[Α-Ωα-ωА-Яа-я]' 

这将返回一个包含至少一个西里尔所有条目或希腊字符

+0

@无法正常工作,请参阅对该问题的编辑,感谢您将这些信息推送到文档中。 – soupagain 2012-01-10 18:03:24

+0

@soupagain hm,没问题:)但它适用于我,当我尝试它(与你的名字),但我看到它可能无处不在/每次 – boobiq 2012-01-10 18:14:00