小编Cra*_*rge的帖子

如何在动态SQL中转义单引号

我在SQL Server上有以下查询,其中一些值存储在先前计算的变量中:

SET @Command = N'INSERT INTO Products (Id
                                ,Region
                                ,Name
                                ,Category
                                ,CreatedBy
                                ,CreatedOn
                                ,) SELECT ' + @Id + ',
                                            Region, 
                                            ''' + @ProductName + ''', 
                                            Category,
                                            CreatedBy,
                                            CreatedOn FROM ' + @ProductTable + ' 
                                                WITH (NOLOCK) WHERE Id IS NOT NULL';

    EXEC(@Command)
Run Code Online (Sandbox Code Playgroud)

它运行正常,除非@ProductName的值包含引号(例如Jim的Product),在这种情况下,我将收到以下错误:字符串后的引号未封闭

有没有办法在这样的动态查询中处理变量中的单引号,其中插入的所选值之一(在这种情况下为@ProductName)直接是要插入的值,而不是源表上的实际列名需要检索其值以进行插入?

sql sql-server dynamicquery single-quotes

2
推荐指数
1
解决办法
3424
查看次数

标签 统计

dynamicquery ×1

single-quotes ×1

sql ×1

sql-server ×1