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,但实际上所有这些都将被撤出.
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 Africa或Outer 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)
| 归档时间: |
|
| 查看次数: |
27782 次 |
| 最近记录: |