2013-04-23 63 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