【问题标题】:What does \ (backslash) mean in an SQL query?在 SQL 查询中,\(反斜杠)是什么意思?
【发布时间】:2013-03-05 01:57:07
【问题描述】:

我有以下问题

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

这会导致答案包含任何 char+a+\+whatever 吗?

Pa\pe 这样的结果是否有效?

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

\ 在 SQL 查询中的正常行为如何??

【问题讨论】:

  • 大多数情况下,它是一个转义字符,表示将下一个字符解释为文字,而不是通配符...
  • 所以它应该产生像 Ca% 或 _a% 这样的结果?
  • 以上对于MSSQL中的tSQL是错误的。反斜杠“\”字符在那里没有特殊含义。使用 ESCAPE 'x' 将 x 定义为转义字符。

标签: sql sql-like


【解决方案1】:

% 是与 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 '_a\%' 实际上会导致 'Xa\%' 是 X any char(实际上是什么)?
  • 是的。 _ 是与任何单个字符匹配的通配符。 % 将匹配多个字符。
  • 对于 SELECT txt1 FROM T1 WHERE txt1 LIKE '_a\%' 那么 'Ca%' 和 '_a%' 都是有效的查询结果吗?
  • 是的。 _ 通配符将匹配任何单个字符,包括 _ 文字。我建议在本地数据库中尝试这种事情。没有什么可以替代一些好的、老式的反复试验。
【解决方案2】:

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

LIKE 'JO%'

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

【讨论】:

  • like 'JO%' 会找到以JO开头的单词,我怀疑不是%的使用,而是反斜杠的使用
  • 你对\有什么了解吗??
  • 您使用的是哪种 SQL(Microsoft、Oracle、mySQL 等)
  • 无,这是一个测试问题:/它只是一个通用查询
  • 不确定是什么\??意思是,对不起
猜你喜欢
  • 2021-06-15
  • 2013-10-24
  • 1970-01-01
  • 2022-01-17
  • 2015-02-02
  • 1970-01-01
  • 2015-11-19
  • 2022-11-01
相关资源
最近更新 更多