Sql server 如执行sql中的搜索无法正常工作

Sql server 如执行sql中的搜索无法正常工作,sql-server,sql-like,sp-executesql,Sql Server,Sql Like,Sp Executesql,我在sp_executesql中面临一个非常奇怪的类似搜索行为: 此语句返回0行: exec sp_executesql N'SELECT * FROM MyTable WHERE Name LIKE ''%'' + @Name + ''%''',N'@Name nvarchar(7)',@Name=N'100024​' 此等效项返回所需行时: DECLARE @Name nvarchar(7)=N'100024' SELECT * FROM MyTable WHERE Na

我在sp_executesql中面临一个非常奇怪的类似搜索行为:

此语句返回0行:

exec sp_executesql N'SELECT * FROM MyTable WHERE Name LIKE ''%'' +
     @Name + ''%''',N'@Name nvarchar(7)',@Name=N'100024​'
此等效项返回所需行时:

DECLARE @Name nvarchar(7)=N'100024'    
SELECT * FROM MyTable WHERE Name LIKE '%' + @Name + '%'

exec sp_executesql命令有什么问题?如果我使用它搜索其他行,如“100033”,它会找到该行,因此语法必须是正确的(事实上,当试图调试为什么我的asp.net页面没有找到此特定元素时,查询是从SQL Profiler中获取的)

您在
N'100024中有奇怪的unicode字符​'零件。
尝试删除零件
N'100024​'并重新编写

示例-第一行正常工作,第二行不工作:

exec sp_executesql N'SELECT * FROM #MyTable WHERE Name LIKE ''%''+@Name+''%''', N'@Name nvarchar(200)',@Name=N'100024'
exec sp_executesql N'SELECT * FROM #MyTable WHERE Name LIKE ''%''+@Name+''%''', N'@Name nvarchar(200)',@Name=N'100024​'

尝试在SQL management studio中保存查询,然后在中打开它,您将看到如下字符:
@Name=N'100024“Äč”
。如果您想用unicode保存,它会提示您。

您的单引号数量似乎不正确(
)。这(从
sp\u execute
位复制):

输出如下:

SELECT * FROM MyTable WHERE Name LIKE '%' +      @Name + '%'
尝试删除
@name
前后的单个引号:

'SELECT * FROM MyTable WHERE Name LIKE ''%' +      @Name + '%'''
输出:

SELECT * FROM MyTable WHERE Name LIKE '%100024?%'

这里有一个不可见的符号
@Name=N'100024​'


是的,不需要争论,这个问题无论如何都应该作为一个简单的打字错误来解决。
SELECT * FROM MyTable WHERE Name LIKE '%100024?%'