Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MYSQL中基于十六进制代码进行REGEXP搜索?_Mysql_Regex - Fatal编程技术网

如何在MYSQL中基于十六进制代码进行REGEXP搜索?

如何在MYSQL中基于十六进制代码进行REGEXP搜索?,mysql,regex,Mysql,Regex,从title REGEXP'[\x20]'所在的标记中选择title返回带有x、2或0的所有内容; 从标签中选择title,其中title REGEXP'\x20'以字面上的x20返回所有内容 我的实际使用案例是,我想搜索可能意外进入控制字符的任何标记。可能有更好的方法来实现这一点,但我想到的是: SELECT title FROM tags WHERE title REGEXP CONCAT('[',CHAR(1),'-',CHAR(31),']') 请注意,这些是十进制字符值,而不是十六进

从title REGEXP'[\x20]'所在的标记中选择title
返回带有x、2或0的所有内容;
从标签中选择title,其中title REGEXP'\x20'
以字面上的x20返回所有内容


我的实际使用案例是,我想搜索可能意外进入控制字符的任何标记。

可能有更好的方法来实现这一点,但我想到的是:

SELECT title FROM tags WHERE title REGEXP CONCAT('[',CHAR(1),'-',CHAR(31),']')
请注意,这些是十进制字符值,而不是十六进制。我也无法找到一种方法让它同时查找空字节(
\x00

下面是一个使用十六进制文字的替代方案:

SELECT title FROM tags WHERE title REGEXP CONCAT('[', x'01', '-', x'1F', ']')

我相信您可以在mysql shell中实现这一点,它可以自行删除反斜杠。以下几点对我很有用:

select id, data regexp '\\x1F\\x8B\\x08' from ...;

真的吗。我只想要“合法”的角色。我猜在顶部的图表中从00到1F,首先是的,它肯定在00爆炸。我甚至不明白你的答案是如何使用引号外的x和CONCAT的。你能解释一下它是如何实现这个答案的吗?如果MySQL支持的
\x
转义,这将构造字符串
'[\x01-\x1F]'
。在正则表达式中,这将是一个字符类,它匹配字符代码介于1和1F(包括1和1F)之间的所有字符
CONCAT
连接字符串,因此
CONCAT('hello','world')
将是'helloworld'。您可以阅读有关十六进制文字的内容。请注意,您可以通过以下查询按十六进制代码搜索单个XML字符:
从title REGEXP x'01'所在的标记中选择title