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