我有以下查询
SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%'
这会导致答案有任何 char+a+\+whatever 吗?
结果是像 Pa\pe 这样的东西有效吗?
Ca% 或 _a% 可能是有效答案吗?
\ 在 SQL 查询中的行为如何正常?
% 是与 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”等的记录。
LIKE 子句允许您在不知道确切值时查找文本,例如以 JO 开头的名称将是
LIKE 'JO%'
但是,如果您正在搜索以 结尾的a%
内容,那么您需要告诉 SQL 将 % 视为您正在搜索的内容的一部分。在您的示例中,您正在寻找一个 3 个字符的字符串,您不在乎第一个字母是什么,但必须以a%结尾。