下面两个sql语句有什么区别:
1.
SELECT pid, config, constants
FROM sys_template
WHERE config LIKE '%code = LIST%'
2.
SELECT pid, config, constants
FROM sys_template
WHERE config LIKE 'code = LIST'
在您的第一个查询中,它显示了所有包含code = LIST的配置列数据
在您的第二个查询中,它显示了与code = LIST完全相同的所有配置列数据
LIKE 支持通配符。通常它使用 % 或 _ 字符作为通配符。
想知道更多关于LIKE
%
是匹配任何字符串的通配符。后者仅完全匹配code = LIST
(基本上在=
这里工作),而前者foocode = LISTbar
也匹配(例如)。
要匹配单个任意字符,您可以将?
其用作通配符。
“%”符号用于定义模式前后的通配符(缺失字母)。它满足了所有这些:
而查询 2 只满足一个字符串:
LIKE 条件中的运算符%
表示任何符号。
对于您的示例 1,结果将仅包含配置为“code = LIST”的项目(在 mysql 中不采用大写和小写),在第二个示例中,结果将包含每个配置为“code = LIST”它。
首先会找到config
里面 code = LIST
的行,例如:
code = LIST
aaacode = LISTaaaa
code = LISTaaaa
aaacode = LIST
第二个只会找到
code = LIST
使用LIKE
运算符时,%
表示它应该匹配出现在该点之前或之后的任何文本。例如,'%code'
将返回以下任何内容:
code
acode
abccode
abcdefcode
鉴于'code%'
将返回以下任何内容:
code
codea
codeabc
codeabcdef
因此,'%code%'
将返回以下任何内容:
code
acodea
abccodeabc
abcdefcodeabcdef
如果您'code'
不使用%
then 即使您正在使用LIKE
,您实际上也会运行精确搜索。