Используйте string_split, если вы используете SQLSERVER, который транспонирует строку в столбец. Набор результатов можно использовать как таблицу и объединить с любой таблицей в БД для желаемого результата.
declare @str VARCHAR(20)= '5;26;31;49'
(SELECT VALUE FROM string_split(@str,';'));
Когда два таблицы объединяются, результат будет выглядеть следующим образом:
select tablB.value from
(SELECT VALUE as code FROM string_split(tableA.col,';')) transposed_table,
tableB
where transposed_table.code = tableB.code
. Вы можете использовать курсор на l oop through для переноса вывода в строку, как показано ниже,
DECLARE @codevalues VARCHAR(max) = '';
DECLARE @codevalue VARCHAR(20)= '';
DECLARE db_cursor CURSOR FOR
select tablB.value+';' from
(SELECT VALUE as code FROM string_split(tableA.col,';')) transposed_table,
tableB
where transposed_table.code = tableB.code;
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @codevalue
WHILE @@FETCH_STATUS = 0
BEGIN
set @codevalues = @codevalues+@codevalue;
FETCH NEXT FROM db_cursor INTO @codevalue
END
CLOSE db_cursor
PRINT @codevalues;
DEALLOCATE db_cursor