封装字符串以忽略引号

Posted

技术标签:

【中文标题】封装字符串以忽略引号【英文标题】:Encapsulate string to ignore quotes 【发布时间】:2020-03-16 11:46:24 【问题描述】:

在 SSIS 中工作,我想捕获错误消息并插入到我的表中。

这是我的插入语句(作为 SSIS 变量):

INSERT INTO dbo.info_etl (event_start,event_end,object,event,status,affected_rows,comment)
VALUES
(CONVERT(DATETIME,'"+ (DT_WSTR, 20) @[System::StartTime] +"',103),GETDATE(),'AMDB_ETL_sn_Mirror', 'LOAD','FAILURE', 0 ,
'Component: " +  @[System::SourceDescription] +
"Error:  " + @[System::ErrorDescription] + "')

不幸的是,一旦变量 @[System::ErrorDescription] 的内容包含引号 ("),此插入将失败,因为这会破坏我插入到列 comment 的字符串。

示例; @[System::ErrorDescription] =

Executing the query "RAISERROR ( 'Whoops, an error occurred.',11,1)" failed with the following error: "Whoops, an error occurred.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

是否有任何巧妙的方法来封装要按字面意思处理的字符串部分,即使包含引号?

【问题讨论】:

不要注入值,使用参数化查询;那么问题就不存在了。执行 Transact-SQL 任务有一个参数窗格;使用它。 【参考方案1】:

我认为错误在

DATETIME,'"+ (DT_WSTR, 20) @[System::StartTime] +"',103

我觉得应该是这样的:

删除: '"+ 和 +"'

【讨论】:

请花点时间阅读help center 中的editing help。 Stack Overflow 上的格式与其他网站不同。

以上是关于封装字符串以忽略引号的主要内容,如果未能解决你的问题,请参考以下文章

在逗号上拆分字符串但忽略双引号内的逗号?

Javascript - 排序数组时忽略引号

Java:拆分逗号分隔的字符串但忽略引号中的逗号

用逗号分割字符串,但忽略括号或引号中的逗号

拆分空格分隔的字符串,忽略单引号内的空格

在逗号上拆分字符串并忽略双引号中的逗号[重复]