gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 00:46:55 24 4
gpt4 key购买 nike

我正在尝试使用 T-SQL LIKE反对多个值(value)观。经过我的研究,最简单的方法似乎类似于:

SELECT Column1
FROM Table_1
WHERE Column1 LIKE '[A,B,C]%'

这样我就可以预期输出看起来像 A1,B2,C3...

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

WHERE Location LIKE '[US/New York, Japan/Tokyo, UK/London]%'

但它的作用与

相同
WHERE Location LIKE '[US,New York, Japan, Tokyo, UK, London]%'

它将返回 US/LA/CBD 或 Tokyo/Tower...

如何在此处转义 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')

下面是我的脚本草稿:

SELECT *
FROM @temp
WHERE Location LIKE '[US/New York, Japan/Tokyo, UK/London]%'

我期望的输出是:

US/New York/A
Japan/Tokyo/C
UK/London/E

但实际上它们都会被拔掉。

最佳答案

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'

在这种情况下不需要转义/。您可以简单地使用带有尾随通配符的表达式。

对于问题的新版本

看来您可能对 LIKE 函数中如何解释 [] 模式有误解。当您有类似 '[US/New York]%' 的模式时,它表示“查找以以下任意字符 US 开头的值/New、(空格)、York。因此,这样的模式将找到值 South Africa外蒙古。它不会查找整个值等于US/New York的行。

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

Select *
From @temp
Where Location Like 'US/New York%'
Or Location Like 'Japan/Tokyo%'
Or Location Like 'UK/London%'

关于sql-server - T-SQL - 如何转义 LIKE 子句中的斜杠/方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16849728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com