【发布时间】:2019-03-14 10:49:05
【问题描述】:
我正在尝试使用替换替换 SQL 中字符串中的多个单词。
REPLACE(REPLACE(REPLACE(wholeString,'{{Name}}',w.Name),'{{ID}}',w.ID),'{{Sal}}',@salary) AS DETAILS
替换值是从另一个别名为 w 的表中读取的。
当我从 SSMS 执行 PROC 时,“详细信息”被插入到所需的表中。但是当我从代码中运行 proc 时,表格中会插入空白。
该代码仅传递了一个在 SP 端正确接收的 ID,因为我通过打印它进行了测试。
另外,是否有替代替代品?
【问题讨论】:
-
您的查询应该没问题。您应该编辑您的问题并提供示例数据并显示查询如何不工作。
-
你是什么意思“有没有替代
REPLACE”?REPLACE执行一个非常简单的功能,它在字符串中找到 所有 个模式的出现,并用第三个参数替换 所有 这些模式。REPLACE将返回NULL的唯一时间是 3 个参数中的任何一个的值也是NULL。如果REPLACE没有找到替换它的模式,它仍然会返回原始值。REPLACE('123','456','789')返回'123'。 -
我的查询主要围绕我的问题的第二部分。尽管参数是正确传递的,并且尽管执行进入 if 循环并在两种情况下(从 ssms 运行时,从代码运行时)在新表中插入所需的行,但在调用 proc 时为“详细信息”输入空白来自代码,否则工作正常。
-
如果您检查数据,您可能会发现问题。我遇到了一个类似的问题,我的数据中有一些空值,并用空值替换,使整个字符串为空,而不是用空白替换。我花了一段时间才找到我的。
-
@Matthew ,你在替换之前做了什么检查空值?
标签: sql .net sql-server