Я пытаюсь объединить все столбцы текстового поля в один столбец для каждой строки и каждой таблицы в базе данных.Я сделал это для указанной таблицы, но я хотел бы сделать это для всех таблиц.
Вот что у меня есть:
DECLARE @YourTableName varchar(1000)
DECLARE @YourColumns varchar(max)
DECLARE @YourQuery varchar(max)
SET @YourTableName='COUNTRY'
SELECT
@YourColumns=STUFF(
(SELECT
'+ ''$$'' +'
+ CASE
WHEN DATA_TYPE IN ('varchar','nvarchar','text','ntext','char','nchar') THEN '''' + [COLUMN_NAME] + '@@'' + ' + 'COALESCE(CONVERT(varchar(max),' + CONVERT(varchar(max),COLUMN_NAME)+'),''NULL'')'
END
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = @YourTableName
FOR XML PATH('')
), 1, 2, ''
)
SET @YourQuery = 'SELECT '+@YourColumns+' FROM '+@YourTableName
EXEC (@YourQuery)
И мой вывод будет примерно таким:
$$COUNTRY_NAME@@United States of America$$COUNTRY_CODE@@USA...
$$COUNTRY_NAME@@United Kingdom$$COUNTRY_CODE@@GBR...
$$COUNTRY_NAME@@France$$COUNTRY_CODE@@FRA...
...
Я установил имя таблицы и хочу выполнить эту работу для каждой таблицы в базе данных, БЕЗ указания каждого имени таблицы.