Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Microsoft SQL Server中创建带转义字符的SQL变量?_Sql_Sql Server_Tsql - Fatal编程技术网

如何在Microsoft SQL Server中创建带转义字符的SQL变量?

如何在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\%

我正在使用Microsoft SQL Server 2014。我试图找到这个字符串“新想法[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很乐意提供帮助:)