2013-04-23 84 views
1

我剛剛發現自己在有趣的情況,我需要查詢的MySQL包含所謂的Left-to-right mark領域丟失的非打印字符(左至右符號)。MySQL查詢與

由於該字符的性質是非打印,因此不可見,我無法簡單地將其複製/粘貼到查詢中。

正如鏈接的維基百科文章中所提到的,從左到右的標記是Unicode字符U + 200F,這是我確信是我當前冒險中成功的關鍵的事實。

我的問題是:如何在MySQL查詢中使用原始Unicode?沿着線的東西:

SELECT * FROM users WHERE username LIKE '%\U+200F%' 

SELECT * FROM users WHERE username REGEXP '\U+200F' 

或任何對Unicode在MySQL正確的語法是根據是否該與LIKE和/或REGEXP支持。

回答

1

爲了得到一個Unicode字符,這樣的事情應該工作:

SELECT CHAR(<number> USING utf8); 

另外,不要使用REGEXP,因爲由MySQL使用正則表達式的lib是很老了,不支持多字節字符集。

+1

謝謝!這使我朝着正確的方向前進。我不知道爲什麼我沒有考慮使用'CHAR',而我很樂意使用'ORD'來獲取這個神祕角色的charcode。 我最終做了這樣的事情:'SELECT * FROM users WHERE username LIKE CONCAT('%',CHAR(14844047),'%')' '14844047'是我從ltr- ORD'。 – decibyte 2013-04-24 07:53:01