5

我有以下查询

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%'

这会导致答案有任何 char+a+\+whatever 吗?

结果是像 Pa\pe 这样的东西有效吗?

Ca% 或 _a% 可能是有效答案吗?

\ 在 SQL 查询中的行为如何正常?

4

2 回答 2

5

% 是与 LIKE 子句中的零个或多个字符匹配的通配符。_ 是一个通配符,它​​恰好匹配 LIKE 子句中的一个字符。

\ 是一个特殊字符,称为转义字符,表示直接跟在它后面的字符应该按字面意思解释(对单引号、通配符等很有用)。

例如:

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a%'

将选择 txt1 值为 'xa1'、'xa taco'、'ya anything really' 等的记录。

现在假设您要实际搜索百分号。为此,您需要一个特殊字符来指示不应将 %视为通配符。例如:

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%'

将选择 txt1 值为 'ba%' 的记录(但仅此而已)。

最后,LIKE 子句通常包含通配符(否则您可以只使用 = 而不是 LIKE)。因此,您可能会看到一个包含 \%% 的查询。这里第一个百分号将被视为文字百分号,但第二个将被解释为通配符。例如:

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%%'

将选择 txt1 值为“da%something else”、“fa% taco”、“ma% bundle of tacos”等的记录。

于 2013-03-05T03:07:09.160 回答
4

LIKE 子句允许您在不知道确切值时查找文本,例如以 JO 开头的名称将是

LIKE 'JO%'

但是,如果您正在搜索以 结尾的a%内容,那么您需要告诉 SQL 将 % 视为您正在搜索的内容的一部分。在您的示例中,您正在寻找一个 3 个字符的字符串,您不在乎第一个字母是什么,但必须以a%结尾。

于 2013-03-05T02:03:18.223 回答