T-SQL - 如何在LIKE子句中转义斜杠/方括号

Ben*_*n S 5 t-sql sql-server escaping slash sql-like

我正在尝试对多个值使用T-SQL LIKE.经过我的研究,最简单的方法似乎是:

SELECT Column1 
FROM Table_1
WHERE Column1 LIKE '[A,B,C]%'
Run Code Online (Sandbox Code Playgroud)

所以我可以期望输出看起来像A1,B2,C3 ......

我的问题是我的场景的元素(A,B,C)格式为"X/Y/Z" - 是的,包含斜杠!斜杠将被视为分隔符 - 与逗号相同.例如,我想选择纽约,东京和伦敦的任何地方,所以我写道:

WHERE Location LIKE '[US/New York, Japan/Tokyo, UK/London]%' 
Run Code Online (Sandbox Code Playgroud)

但它确实如此

WHERE Location LIKE '[US,New York, Japan, Tokyo, UK, London]%'
Run Code Online (Sandbox Code Playgroud)

它将返回US/LA/CBD或东京/塔...

任何人都可以点亮我的方式如何在LIKE条款的方括号内逃避斜线?提前谢谢了.

这是示例表:

DECLARE @temp TABLE (Location NVARCHAR(50))
INSERT INTO @temp (Location ) VALUES ('US/New York/A')
INSERT INTO @temp (Location ) VALUES('New York/B')
INSERT INTO @temp (Location ) VALUES ('Japan/Tokyo/C')
INSERT INTO @temp (Location ) VALUES ('Tokyo/D')
INSERT INTO @temp (Location ) VALUES ('UK/London/E')
INSERT INTO @temp (Location ) VALUES('London/F')
Run Code Online (Sandbox Code Playgroud)

以下是我的草稿脚本:

SELECT *
FROM @temp
WHERE Location LIKE '[US/New York, Japan/Tokyo, UK/London]%'
Run Code Online (Sandbox Code Playgroud)

我期待输出是:美国/纽约/日本/东京/英国/伦敦/ E,但实际上所有这些都将被撤出.

Tho*_*mas 1

DECLARE @temp TABLE ( Location NVARCHAR(50)    )

INSERT @temp (Location )
VALUES ('US/New York/A')
    , ('New York/B')
    , ('Japan/Tokyo/A')
    , ('Tokyo/B')
    , ('UK/London/A')
    , ('London/B')

Select *
From @temp
Where Location Like '%/A'
Run Code Online (Sandbox Code Playgroud)

在这种情况下没有必要逃避/。您可以简单地使用带有尾随通配符的表达式。

对于问题的新版本

看来您可能对[]LIKE 函数中如何解释模式有误解。当您有像 之类的模式时'[US/New York]%',它会说“查找以以下任何字符开头的值U, S, /, N, e, w, (space), Y, o, r, 或k。因此,这样的模式将找到一个值South AfricaOuter Mongolia。它不是” t 查找整个值等于 的行US/New York

实现您所寻求的目标的一种方法是使用多个Or语句:

Select *
From @temp
Where Location Like 'US/New York%'
    Or Location Like 'Japan/Tokyo%'
    Or Location Like 'UK/London%'
Run Code Online (Sandbox Code Playgroud)