SQL Server:将字符串文本分配给参数



我需要做这样的事情:

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';

根据文档:

如果参数的值是对象名称、字符串或 由数据库名称或架构名称限定,整个名称必须 用单引号引起来。如果参数的值为 关键字,关键字必须用双引号引起来。

我不知道为什么没有单引号它会起作用。

最新更新