当我使用mysql搜索时我得到了这个问题。这是详细信息。
说我有一个名为test
的表,其中一列名为content
。在特定记录中,content
列包含:
["
/^\w{2,}/","
/^[a-z][a-z0-9]+$/","
/^[a-z0-9]+$/","
/^[a-z]\d+$/"]
在行尾有一个换行符(排除最后一行) 所以当我使用like语法搜索这条记录时,我写了一个像这样的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
只是做得很好?
答案 0 :(得分:3)
MySQL LIKE
运算符根据模式选择数据 。
LIKE
运算符通常用于根据模式选择数据。以正确的方式使用LIKE
运算符对于提高查询性能至关重要。
LIKE
运算符允许您根据指定的模式从表中选择数据。因此,LIKE
运算符通常用于WHERE
语句的SELECT
子句。
MySQL提供了两个通配符,可用于LIKE
运算符,百分比%
和下划线_
。
%
)通配符允许您匹配任何零个或多个字符的字符串。_
)通配符允许您匹配任何单个字符。 Comparison operations
会产生值1(TRUE
),0(FALSE
)或NULL
。这些操作适用于数字和字符串。根据需要,字符串会自动转换为数字和数字到字符串。
以下关系比较运算符不仅可用于比较标量操作数,还可用于比较行操作数:
=> < > =< =<> !=
注意:=
是等于运算符,LIKE
用于简单模式匹配