\(反斜杠)在SQL查询中是什么意思?

\(反斜杠)在SQL查询中是什么意思?,sql,sql-like,Sql,Sql Like,我有以下疑问 SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%' 这会导致答案有任何char+a+\+什么吗 因此,类似Pa\pe的内容是否有效 可能是Ca%或a%的有效答案吗 在SQL查询中\的正常行为是什么?LIKE子句允许您在不知道确切值时查找文本,例如以JO开头的名称可能是 LIKE 'JO%' 但是,如果要搜索以%结尾的内容,则需要告诉SQL将%作为搜索内容的一部分。在您的示例中,您正在寻找一个3个字符的字符串,您不在乎第一个字母是什么,但必须以a

我有以下疑问

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%'
这会导致答案有任何char+a+\+什么吗

因此,类似Pa\pe的内容是否有效

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


在SQL查询中\的正常行为是什么?

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

LIKE 'JO%'

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

%是一个通配符,与LIKE子句中的零个或多个字符相匹配。 _是一个通配符,在LIKE子句中只能包含一个字符

\是一种称为转义字符的特殊字符,它指示直接跟在其后的字符应按字面解释(对单引号、通配符等有用)

例如:

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a%'
SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%'
SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%%'
将选择txt1值为“xa1”、“xa taco”、“ya anything really”等的记录

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

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a%'
SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%'
SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%%'
将选择txt1值为“ba%”的记录(除此之外无其他内容)

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

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

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

大多数情况下,它是一个转义字符,表示将下一个字符解释为文字,而不是通配符……因此它应该产生类似于Ca%或_a%的结果?类似于“JO%”会找到以JO开头的单词,我怀疑的不是%的用法,但是反斜杠的使用您知道\?您使用的是哪种SQL(Microsoft、Oracle、mySQL等)吗?没有,这是一个测试中的问题:/这只是一个通用的查询\?不确定是什么??意思是说,对不起,OK,但是u仍然会选择任何字符,对吗?那么像“\u a\%”这样的结果实际上是像“Xa\%”这样的东西是X任何字符(实际上是任何字符)?是的是与任何单个字符匹配的通配符。%将匹配多个字符。“Ca%”和“_a%”是否都是从T1中选择txt1的有效查询结果,其中txt1与“_a\%”相似?是。_u通配符将匹配任何单个字符,包括u文字。我建议在本地数据库中尝试这种方法。没有什么可以替代一些好的、老式的反复试验。