短版本:
在命令行mysql中,可以使用什么样的转义序列来搜索unicode字符?
长版本:
我正在寻找一种从命令行搜索mysql中包含unicode序列u+200b的记录的方法。我不知道该用哪种逃避方式。我试过200b和x200b,甚至我终于找到了一个建议使用utf8语法的博客。这将在命令行上生成字符:
select _utf8 x'200B';
现在我被困在一个“like”查询中。
这会生成字符,但如果将%放在类似的部分中,则似乎会失去其特殊含义:
select _utf8 x'0025200B0025';
我也试过一个concat,但也没用:
select concat('%', _utf8 x'200B', '%');
更多背景:
我有一些数据中包含零宽度空格字符(zwsp),unicode点u+200b。这通常是由于从在输出中使用zwsp的网站复制/粘贴造成的。对于大多数unicode字符,我可以将该字符粘贴到终端中(或者用键码创建它),但是由于这个字符是不可见的,所以它有点困难。我可以创建一个生成“%%”序列的文件,并将其复制/粘贴到终端,它将工作,但它会使我的命令历史记录和终端输出不正常。我认为在mysql中有一种简单的方法可以做到这一点,但是到目前为止我还没有找到。
提前谢谢你,
-保罗伯尼
最佳答案
select _utf8 x'0025200B0025';
那不是utf-8,而是utf-16/ucs-2。如果mysql副本中有ucs-2支持,则可以说
SELECT _ucs2 0x0025200B0025
。否则,utf-8中字节序列编码字符u+200b将是0xe2、0x80、0x8b:
select 0xE2808B;