Я пытаюсь ЗАМЕНИТЬ несколько символов в запросе SQL Server и хочу достичь этого с помощью таблицы #temp вместо вложенного REPLACE. Я получил код SQL ниже и хочу достичь результата, например
ABC
DEF
GHI
IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp
IF OBJECT_ID('tempdb..#temp2') IS NOT NULL DROP TABLE #temp2
CREATE TABLE #temp
(
STRING_TO_REPLACE NVARCHAR(5)
)
INSERT INTO #temp (STRING_TO_REPLACE)
VALUES (' ')
,('/')
,('_')
CREATE TABLE #temp2
(
STRING_NAME NVARCHAR(5)
)
INSERT INTO #temp2 (STRING_NAME)
VALUES ('A BC')
,('D/EF')
,('G_HI')
SELECT REPLACE(t2.STRING_NAME,(SELECT t1.STRING_TO_REPLACE
FROM #temp t1),'')
FROM #temp2 t2
IF OBJECT_ID('tempdb..#temp') IS NOT NULL DROP TABLE #temp
IF OBJECT_ID('tempdb..#temp2') IS NOT NULL DROP TABLE #temp2
Я могу добиться результата с вложенной заменой
SELECT REPLACE(REPLACE(REPLACE(t2.STRING_NAME,'_',''),'/',''),' ','') FROM #temp2 t2
но очень хотелось бы сделать это через таблицу #temp. Пожалуйста, помогите мне в этом. Когда я пытаюсь запустить свой первый код, я получаю следующую ошибку:
Msg 512, уровень 16, состояние 1, строка 23 Подзапрос возвращает более 1 стоимость. Это недопустимо, когда подзапрос следует =,! =, <, < =,
>= или когда подзапрос используется как выражение.