2013-03-05 575 views
2

我有以下查询(反斜杠)在SQL查询中意味着什么?

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

将那结果有任何字符答案+ A + \ +什么?

有点像Pa \ pe作为结果吗?

是Ca%或_a%有效答案也许?

如何在SQL查询中正常运行?

+1

大多数情况下,这是一种逃避字符,说解释下一个字符为文字,而不是通配符字符... – Sparky 2013-03-05 01:58:32

+0

所以它应该产生像Ca%或_a%这样的结果? – Polux 2013-03-05 02:16:36

回答

2

%是一个匹配LIKE子句中的零个或多个字符的通配符。 _是在LIKE子句中精确匹配一个字符的通配符。

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

例如:

SELECT txt1 FROM T1 WHERE txt1 LIKE '_a%' 

将选择“XA1”的txt1中值的记录,“XA塔科”,“雅什么真正的”等

现在让我们假设你想实际搜索为百分号。为了做到这一点,你需要一个特殊的字符,表示%而不是被视为通配符。例如:

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

将选择txt1值为'ba%'(但没有别的)的记录。

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

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

将选择“DA%别的东西”,“FA%塔科”,“质量%一堆玉米饼”等txt1中值的记录

+0

好的,但_仍然会选择任何字符右键?那么LIKE'_a \%'实际上导致像'Xa \%'这样的东西是X任何字符(实际上是什么)? – Polux 2013-03-05 03:38:06

+0

是的。 _是与任何单个字符匹配的通配符。 %将匹配多个字符。 – chrislopresto 2013-03-05 03:58:51

+0

对于SELECT txt1 FROM T1 WHERE txt1 LIKE'_a \%'是'Ca%'和'_a%'的有效查询结果呢? – Polux 2013-03-05 04:20:36

4

LIKE子句可以让你找到的文本,当你不知道确切值,如姓名与JO开始将

LIKE 'JO%' 

但是,如果你正在寻找与a%结束的东西,那么你需要告诉SQL将%作为你正在搜索的一部分。在你的例子中,你正在寻找一个3个字符的字符串,你不关心第一个字母是什么,但必须以a%结束。

+0

like'JO%'会找到以JO开头的单词,我的疑问不是关于使用%,而是使用反斜杠 – Polux 2013-03-05 02:10:42

+0

对不起,错字,谢谢 – Sparky 2013-03-05 02:11:11

+0

你知道关于\ ??的任何内容吗? – Polux 2013-03-05 02:13:16