У меня небольшой вопрос ... это тестовые данные
CREATE TABLE #TestReplace (
Description NVARCHAR(500)
,ParamValue1 INT
,ParamValue2 INT
,ParamValue3 INT
);
INSERT INTO #TestReplace (Description)
VALUES ('This sentence has no parameteres, and it should be shown like this');
INSERT INTO #TestReplace (
Description
,ParamValue1
)
VALUES (
'This sentence has only one parametere, and it should be shown right here {param} with rest of text'
,100
);
INSERT INTO #TestReplace (
Description
,ParamValue1
,ParamValue2
)
VALUES (
'This sentence has two parameteres, one here {param} and one here {param}, show full sentence'
,100
,200
);
INSERT INTO #TestReplace (
Description
,ParamValue1
,ParamValue2
,ParamValue3
)
VALUES (
'This sentence has all parameteres, here {param} and here {param} and there {param}'
,100
,200
,300
);
В моем предложении есть вхождения слова {param}
иногда или никогда ... и столбцы ParamValue1
, ParamValue2
, ParamValue3
... Как можно заменить первые вхождения слова {param}
значением столбца ParamValue1
, вторым словом {param}
значением столбца ParamValue2
и третьим значением столбца ParamValue3
.. Я не могу изменить слово {param}
на {param1}
, {param2}
и {param3}
и go с простой заменой
Пока мне удалось заменить только первое вхождение ...
SELECT CASE
WHEN CHARINDEX('{param}', DESCRIPTION) > 0
THEN STUFF(DESCRIPTION, CHARINDEX('{param}', DESCRIPTION), LEN('{param}'), ParamValue1)
ELSE DESCRIPTION
END
FROM #TestReplace
Это легко удалось сделать в Oracle (Oracle - заменить строку на внешний вид )