Как динамически получить столбцы из соответствующих таблиц в базе данных в SQL?
Я хочу динамически получать столбцы из соответствующих таблиц в базе данных на языке SQL. я могу извлекать столбцы без квадратных скобок. Но мне нужно это сделать, так как есть столбцы с дефисом для нескольких таблиц .
Что я уже пробовал:
Основной код выглядит следующим образом:
select @SourceColumnList = @SourceColumnList + ',' + case when DATA_TYPE = 'xml' then 'convert(varchar(max),'+column_name+')' else column_name end from information_schema.columns where table_name = @TableName and DATA_TYPE not in ('timestamp') select @DestinationColumnList= @DestinationColumnList+ ',' + column_name from information_schema.columns where table_name = @TableName and DATA_TYPE not in ('timestamp') set @SourceColumnList= RIGHT(@SourceColumnList,Len(@SourceColumnList)-1) set @DestinationColumnList= RIGHT(@DestinationColumnList,Len(@DestinationColumnList)-1)
выбирать
set @SourceColumnList
выбирать
set @DestinationColumnList
Maciej Los
Что?
ranio
Я хочу получить столбцы из таблицы, как показано ниже в формате
Я имею в виду сказать
вставить в тест([a].[b],[c])
выберите [a],[b],[c] из abc
все столбцы должны быть заключены в квадратные скобки, как уже упоминалось выше.
мне нужно установить это в динамическом скрипте, показанном ниже:
выберите @SourceColumnList = @SourceColumnList + ',' + случай, когда типу data_type = 'в формате XML", затем " конвертировать(тип varchar(Макс),'+аргумент+')' имя_столбца другого конца
из регулярных выражений.столбцы
где table_name = @TableName и DATA_TYPE not in ('timestamp')
выберите @DestinationColumnList= @DestinationColumnList+ ',' + column_name
из регулярных выражений.столбцы
где table_name = @TableName и DATA_TYPE not in ('timestamp')
set @SourceColumnList= RIGHT(@SourceColumnList,Len(@SourceColumnList)-1)
set @DestinationColumnList= RIGHT(@DestinationColumnList,Len(@DestinationColumnList)-1)