1

下面两个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'
4

6 回答 6

3
  1. 在您的第一个查询中,它显示了所有包含code = LIST的配置列数据

  2. 在您的第二个查询中,它显示了与code = LIST完全相同的所有配置列数据

LIKE 支持通配符。通常它使用 % 或 _ 字符作为通配符。

想知道更多关于LIKE

于 2013-07-29T08:09:23.520 回答
1

%是匹配任何字符串的通配符。后者仅完全匹配code = LIST(基本上在=这里工作),而前者foocode = LISTbar也匹配(例如)。

要匹配单个任意字符,您可以将?其用作通配符。

于 2013-07-29T08:09:44.080 回答
0

“%”符号用于定义模式前后的通配符(缺失字母)。它满足了所有这些:

  • 'acb 代码 = 列表 12'
  • 'efasd 代码 = LIST sdf'
  • '无论代码 = 列出什么'

而查询 2 只满足一个字符串:

  • 代码=列表

Sql Like 细节在这里

于 2013-07-29T08:09:39.090 回答
0

LIKE 条件中的运算符%表示任何符号。

对于您的示例 1,结果将仅包含配置为“code = LIST”的项目(在 mysql 中不采用大写和小写),在第二个示例中,结果将包含每个配置为“code = LIST”它。

于 2013-07-29T08:10:28.137 回答
0

首先会找到config里面 code = LIST的行,例如:

code = LIST
aaacode = LISTaaaa
code = LISTaaaa
aaacode = LIST

第二个只会找到

code = LIST
于 2013-07-29T08:11:02.220 回答
0

使用LIKE运算符时,%表示它应该匹配出现在该点之前或之后的任何文本。例如,'%code'将返回以下任何内容:

code
acode
abccode
abcdefcode

鉴于'code%'将返回以下任何内容:

code
codea
codeabc
codeabcdef

因此,'%code%'将返回以下任何内容:

code
acodea
abccodeabc
abcdefcodeabcdef

如果您'code'不使用%then 即使您正在使用LIKE,您实际上也会运行精确搜索。

于 2013-07-29T08:11:06.630 回答