我有以下查询
SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%'
会导致答案中有任何char + a + \ +等等吗?
就像Pa \ pe那样有效吗?
可能是Ca%或_a%的有效答案吗?
在SQL查询中如何正常表现?
答案 0 :(得分:4)
LIKE子句允许您在不知道确切值时查找文本,例如以JO开头的名称
LIKE 'JO%'
但是,如果您要搜索以 a%
结尾的内容,则需要告诉SQL将%视为您要搜索的内容的一部分。在您的示例中,您正在寻找一个3个字符的字符串,您不关心第一个字母是什么,但必须以 a%结尾。
答案 1 :(得分:4)
%是一个通配符,匹配LIKE子句中的零个或多个字符。 _是一个通配符,它在LIKE子句中只匹配一个字符。
\是一个称为转义字符的特殊字符,表示直接跟随它的字符应按字面解释(对单引号,通配符等有用)。
例如:
SELECT txt1 FROM T1 WHERE txt1 LIKE '_a%'
将选择txt1值为'xa1','xa taco','ya really 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%of of of tacos”等的记录。