SQL中的REPLACE问题

时间:2019-03-14 10:49:05

标签: sql .net sql-server

我正在尝试使用replace替换SQL字符串中的多个单词。

REPLACE(REPLACE(REPLACE(wholeString,'{{Name}}',w.Name),'{{ID}}',w.ID),'{{Sal}}',@salary) AS DETAILS

从另一个别名为w的表中读取替换值。

当我从SSMS执行PROC时,“ DETAILS”将插入所需的表中。但是,当我从代码运行proc时,表中会插入空白。

代码仅传递一个ID,该ID在我通过打印输出进行测试时在SP端正确接收。

还可以替代吗?

2 个答案:

答案 0 :(得分:0)

如果您尝试这样做,会发生什么?

REPLACE(REPLACE(REPLACE(ISNULL(wholeString, 'NULLWHOLESTRING'),'{{Name}}',ISNULL(w.Name, 'NULLNAME')),'{{ID}}',ISNULL(w.ID, 'NULLID')),'{{Sal}}',ISNULL(@salary, 'NULLSALARY')) AS DETAILS

如果问题是由NULL引起的,那应该可以让您知道吗?

答案 1 :(得分:0)

NB:按照上面的评论检查是否为空。

SELECT  REPLACE(REPLACE(REPLACE(wholeString, '{{Name}}', ISNULL(w.Name,'')), '{{ID}}', ISNULL(w.ID,'')), '{{Sal}}', ISNULL(@salary,'')) AS DETAILS;

还请注意,您要从中提取的这些列必须为char格式。如果ID或Salary参数之类的字段是数字字段,则需要使用以下强制转换将其包装起来:

ISNULL(CAST(w.ID as NVARCHAR(255)),'')