我一直在尝试使用此查询获取表行:
SELECT * FROM `table` WHERE `field` LIKE "%\u0435\u0442\u043e\u0442%"
字段本身:
Field
--------------------------------------------------------------------
\u0435\u0442\u043e\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0430
尽管我似乎无法让它正常工作。
我已经尝试过使用反斜杠字符进行实验:
LIKE "%\\u0435\\u0442\\u043e\\u0442%"
LIKE "%\\\\u0435\\\\u0442\\\\u043e\\\\u0442%"
但它们似乎都不起作用。
如果有人能提示我做错了什么,我将不胜感激。
提前致谢!
EDIT
问题解决了。
解决方案:即使在更正查询语法后,它也没有返回任何结果。将字段设置为 BINARY 后,查询开始工作。
正如下面记录的字符串比较函数 http://dev.mysql.com/doc/en/string-comparison-functions.html#operator_like:
Note
因为 MySQL 在字符串中使用 C 转义语法(例如,“\n
” 来表示换行符),您必须将任何“\
” 你用在LIKE http://dev.mysql.com/doc/en/string-comparison-functions.html#operator_like字符串。例如,要搜索“\n
”,将其指定为“\\n
”。要搜索“\
”,将其指定为“\\\\
”;这是因为反斜杠被解析器剥离一次,并在进行模式匹配时再次剥离,留下一个反斜杠进行匹配。
所以:
SELECT * FROM `table` WHERE `field` LIKE '%\\\\u0435\\\\u0442\\\\u043e\\\\u0442%'
看到它sqlfiddle http://sqlfiddle.com/#!2/58b00/1/0.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)