如何在使用for xml生成sql语句后去掉特殊字符

时间:2015-09-22 14:45:23

标签: sql-server select-for-xml

我使用for xml为审计跟踪生成了插入语句,并生成了正确的插入语句。以下是生成的内容。

这是Print @SQL输出的内容:

INSERT INTO [AuditLog]
                (
                [TableName]
                ,[ColumnName]
                ,[Value]
                ,[Action]
                ,[TimeStamp]
                )           
                SELECT 
                    'Book'
                    ,'BookID'
                    ,CONVERT(VARCHAR(MAX), BookID)
                    ,CONVERT(VARCHAR(MAX), 1)
                    ,getdate()
                FROM INSERTED;
                INSERT INTO [AuditLog]
                (
                [TableName]
                ,[ColumnName]
                ,[Value]
                ,[Action]
                ,[TimeStamp]
                )           
                SELECT 
                    'Book'
                    ,'c_Name'
                    ,CONVERT(VARCHAR(MAX), c_Name)
                    ,CONVERT(VARCHAR(MAX), 1)
                    ,getdate()
                FROM INSERTED;
                INSERT INTO [AuditLog]
                (
                [TableName]
                ,[ColumnName]
                ,[Value]
                ,[Action]
                ,[TimeStamp]
                )           
                SELECT 
                    'Book'
                    ,'c_Author'
                    ,CONVERT(VARCHAR(MAX), c_Author)
                    ,CONVERT(VARCHAR(MAX), 1)
                    ,getdate()
                FROM INSERTED;
                INSERT INTO [AuditLog]
                (
                [TableName]
                ,[ColumnName]
                ,[Value]
                ,[Action]
                ,[TimeStamp]
                )           
                SELECT 
                    'Book'
                    ,'c_Price'
                    ,CONVERT(VARCHAR(MAX), c_Price)
                    ,CONVERT(VARCHAR(MAX), 1)
                    ,getdate()
                FROM INSERTED;

但是当我尝试使用EXECUTE(@SQL)执行时,我收到一条错误消息:

  

'&'附近的语法不正确。

1 个答案:

答案 0 :(得分:0)

令人难以置信的是,我找到了非常简单的解决方案。我使用 COALESCE 函数生成动态插入语句,我没有看到任何特殊字符,否则使用 for xml