如何在Microsoft SQL Server中创建带转义字符的SQL变量?
我正在使用Microsoft SQL Server 2014。我试图找到这个字符串“新想法[10%]”。不幸的是,如何在Microsoft SQL Server中创建带转义字符的SQL变量?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我正在使用Microsoft SQL Server 2014。我试图找到这个字符串“新想法[10%]”。不幸的是,[、%和]都是特殊字符,这会把查询搞砸。我需要将字符串放入一个变量中,以实现其他自动化目的 我已经在下面列举了一些我尝试过的例子: DECLARE @sourceLike NVARCHAR(MAX); --SET @sourceLike = '%New Idea ![10!%!]%' ESCAPE '!'; --SET @sourceLike = '%New Idea \[10\%
[
、%
和]
都是特殊字符,这会把查询搞砸。我需要将字符串放入一个变量中,以实现其他自动化目的
我已经在下面列举了一些我尝试过的例子:
DECLARE @sourceLike NVARCHAR(MAX);
--SET @sourceLike = '%New Idea ![10!%!]%' ESCAPE '!';
--SET @sourceLike = '%New Idea \[10\%\]%';
SET @sourceLike = 'New Idea [10%]';
--RoadmapCalculationResults-----------------------------------------------------
SELECT LeverMaturity
FROM RoadmapCalculationResults
WHERE LeverMaturity LIKE @sourceLike
我想我的问题是我不能创建带有转义字符的字符串变量
有什么建议吗?这应该可以:
CREATE TABLE T ( STR VARCHAR(MAX));
DECLARE @sourceLike VARCHAR(50) = '%New Idea ![10!%!]%';
INSERT INTO T VALUES
('C:\James\AAA(1) - C0001506 Mrs Michaela Hysell.pdf'),
('C:\James\AAA(10) - C00 New Idea [10%] rdoza.pdf'),
('C:\James\AAA(11) - C0001517 Mrs Melony Pickle.pdf'),
('C:\James\AAA(12) - C0001518 Mr Homer Guillot.pdf'),
('C:\James\AAA(13) - C0001519 Mrs Lawerence Matis.pdf'),
('C:\James\AAA(14) - C0001520 Mrs Yahaira Hausner.pdf');
SELECT *
FROM T
WHERE STR LIKE @sourceLike ESCAPE '!'
结果:
+-------------------------------------------------+
| STR |
+-------------------------------------------------+
| C:\James\AAA(10) - C00 New Idea [10%] rdoza.pdf |
+-------------------------------------------------+
新点子的
哪里出了问题![10!%!]%“逃脱”代码>?正如我所说,我需要使用变量来实现自动化/其他目的。事实上,我没有VAR工作,也有类似的代码。请参阅我的答案和演示。您可以考虑为转义字符设置变量。如果不需要使用它,请将其保留为空(例如,比如@sourceLike ESCAPE@escapeChar
)。这样,您就不会在搜索“Hello World!%”之类的字符串时遇到问题如果您有一个前导通配符,如注释掉的示例中所示,则使用CHARINDEX
会简单得多,因为您不需要转义任何内容。@SyaifulNizamYahya很乐意提供帮助:)