我需要做类似的事情:
EXEC sp_ExecuteSQL N'select * from Members where Name like @pat',
N'@pat nvarchar(max)', @pat=Tom
我的问题是关于最后一个参数。
当要分配的值是"简单"字符串,即没有空格等,我可以使用@pat=Tom
之类的东西,不需要引号。
但是,当要分配的值以%
字符结尾时,它不会起作用,我必须执行@pat=N'Tom%'
之类的操作。
这是如何定义分配字符串文字的语法的?
这是否也意味着如果我的值包含单引号,我将不得不手动转义它?
答案 0 :(得分:0)
我很惊讶它没有引号。这必须是exec
的特点。
始终包含单引号:
EXEC sp_ExecuteSQL N'select * from Members where Name like @pat',
N'@pat nvarchar(max)', @pat='Tom';
如果参数的值是对象名称,字符串,或 由数据库名称或模式名称限定,必须是整个名称 用单引号括起来。如果参数的值是a 关键字,关键字必须用双引号括起来。
我不知道为什么没有单引号就行。