2012-01-10 96 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