Проблема с REPLACE в SQL - PullRequest
       2

Проблема с REPLACE в SQL

0 голосов
/ 14 марта 2019

Я пытаюсь заменить несколько слов в строке в SQL с помощью замены.

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

Значения замены считываются из другой таблицы с псевдонимом w.

Когда я выполняю PROC из SSMS, «ДЕТАЛИ» вставляются в необходимую таблицу. Но когда я запускаю процесс из кода, в таблицу вставляется пробел.

Код передает только идентификатор, который правильно получен на стороне SP, как я проверял, распечатывая его.

Кроме того, есть ли альтернатива для замены?

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

Примечание: проверка на нулевые значения в соответствии с комментарием выше.

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

Обратите также внимание, что эти столбцы, которые вы извлекаете, должны быть в формате char.Если поле типа ID или параметр заработной платы является числовым, вам нужно обернуть его приведением типа:

ISNULL(CAST(w.ID as NVARCHAR(255)),'')
0 голосов
/ 14 марта 2019

Что произойдет, если вы попробуете это вместо этого?

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

Это должно дать вам представление, если проблема вызвана NULL с или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...