2015-08-15 67 views
0

我想查詢梵文語言中的一系列字符。如果我使用MariaDB PCRE正則表達式問題

SELECT count(`dev`) FROM `transliteration` WHERE `dev` REGEXP 'क़'; 

它返回的71計數,但我希望能夠通過它的Unicode引用查詢,所以我會認爲下列代碼應該起作用:

SELECT count(`dev`) FROM `transliteration` WHERE `dev` REGEXP '[\\x{958}]'; 

MariaDB的支持PCRE所以我應該能夠做到這一點,即使我迄今還沒有成功。我甚至讀到documentation但無濟於事。它似乎像處理花括號中的數字一樣,如果我有兩個以上的十六進制數字,我想重複。那麼,unicode擁有超過兩位數的字符!

如上所述,我想查詢一個範圍([\x{0958}-\x{095E}]),但首先要做的事情。

回答

1

假設你用utf8編碼工作在整個系統中,...

威力工作:

SELECT 'क़ज़फ़' REGEXP '^[क़-फ़]+$'; 

(它工作在我的測試環境)

如果沒有,那麼你可能需要構建REGEXP,注意這裏是如何在utf8和unicode之間進行轉換的:

SELECT CONVERT(UNHEX('0958') USING ucs2); --> क़ 
SELECT HEX(CONVERT('क़' USING ucs2))  --> 0958