当我使用mysql搜索某样东西时,我得到了这个问题。这是详细的信息。
假设我有一个名为test的表和一个名为content的列。在特定记录中,content列保存:
["
/^\w{2,}/","
/^[a-z][a-z0-9]+$/","
/^[a-z0-9]+$/","
/^[a-z]\d+$/"]在行尾有一个linefeed字符(最后一行除外),所以当我使用类似的语法搜索这个记录时,我编写了如下所示的SQL
select * from test where `content` like
'[\"\n/^\\\\w{2,}/\",\"\n/^[a-z][a-z0-9]+$/\",\"\n/^[a-z0-9]+$/\",\"\n/^[a-z]\\\\d+$/\"]'结果是正确的。但是,当我将like更改为=而这个SQL语句无法工作时,经过几次尝试后,我得到了这个有效的SQL语句:
select * from test where `content` =
'[\"\n/^\\w{2,}/\",\"\n/^[a-z][a-z0-9]+$/\",\"\n/^[a-z0-9]+$/\",\"\n/^[a-z]\\d+$/\"]'啊,真灵。所以问题是:为什么like和=有不同的逃逸策略?在like语句中,我必须使用\\\\w,\\\\d,而在=语句\\w中,\\d做得很好吗?
发布于 2018-06-09 05:35:49
MySQL LIKE操作符根据模式选择数据。
LIKE运算符通常用于根据模式选择数据。以正确的方式使用LIKE运算符对于提高查询性能至关重要。
LIKE操作符允许您根据指定的模式从表中选择数据。因此,LIKE运算符经常在SELECT语句的WHERE子句中使用。
MySQL提供了两个通配符用于LIKE运算符,百分比%和下划线_。
%)通配符允许您匹配任何零个或多个字符的字符串。_)通配符允许您匹配任何单个字符。Comparison operations的值为1 (TRUE)、0 (FALSE)或NULL。这些操作适用于数字和字符串。必要时,字符串自动转换为数字和数字。
以下关系比较运算符不仅可用于比较标量操作数,还可用于比较行操作数:
< >= <= <> !=
注意:对于简单的模式匹配,=是相等的运算符,LIKE是
https://stackoverflow.com/questions/50771201
复制相似问题