/(反斜杠)在SQL查询中的含义是什么?

时间:2013-03-05 01:57:07

标签: sql sql-like

我有以下查询

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

会导致答案中有任何char + a + \ +等等吗?

就像Pa \ pe那样有效吗?

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

在SQL查询中如何正常表现?

2 个答案:

答案 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”等的记录。