我正在尝试使用replace替换SQL字符串中的多个单词。
REPLACE(REPLACE(REPLACE(wholeString,'{{Name}}',w.Name),'{{ID}}',w.ID),'{{Sal}}',@salary) AS DETAILS
从另一个别名为w的表中读取替换值。
当我从SSMS执行PROC时,“ DETAILS”将插入所需的表中。但是,当我从代码运行proc时,表中会插入空白。
代码仅传递一个ID,该ID在我通过打印输出进行测试时在SP端正确接收。
还可以替代吗?
答案 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)),'')