代码之家  ›  专栏  ›  技术社区  ›  Cyberherbalist

SQL中通配符的双转义是否会使转义无效?

sql
  •  2
  • Cyberherbalist  · 技术社区  · 15 年前

    select * from #z where b like '%e%' ESCAPE 'e'
    

    此表中包含以下值:

    create table #z (a int, b varchar(10))
    insert into #z values (1, 'e25%')
    insert into #z values (2, '25')
    insert into #z values (3, '18%')
    insert into #z values (4, 'cab')
    insert into #z values (5, '2%')
    

    选择三行末尾有%的行。

    但是,如果我替换 like '%e%' 具有 like 'ee%' 它只选择第一行。这样看来,双转义%就像双负数一样,并撤消转义,从而使%再次回到通配符中。我理解得对吗?或者这里还有别的事情吗?

    2 回复  |  直到 15 年前
        1
  •  5
  •   gbn    15 年前

    实际上我并不使用ESCAPE:我总是觉得很奇怪。 e 所以你得到 like 'e%'

    我个人会用这个 like '%[%]' (无处可逃)在可能的情况下

        2
  •  2
  •   Mark Byers    15 年前

    同样的原则适用于许多语言,如果你想要一个反斜杠,你必须写两个反斜杠-第一个反斜杠转义第二个,这样它就失去了它的特殊意义。