Sql server 如执行sql中的搜索无法正常工作
我在sp_executesql中面临一个非常奇怪的类似搜索行为: 此语句返回0行: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
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?%'