2013-02-22 6 views
4

Я хочу использовать ISNULL со всеми столбцами таблицы.ISNULL с SQL Server 2008

Как это

SELECT ISNULL(* , 'NA') FROM #tbl 

Я знаю его неправильный путь, я должен указать имя каждого столбца отдельно использовать ISNULL.

Но в моем случае #tbl это временная таблица и столбцы создаются динамически

так:

EXEC ('ALTER TABLE #tbl ADD [' + @bno + '] varchar(30)') 

В связи с этим я не могу использовать имена столбцов в запросе на выборку, так как имена столбцов всегда другой.

Итак, что мне делать?

ответ

1

Изменение динамического SQL в:

EXEC ('ALTER TABLE #tbl ADD [' + @bno + '] varchar(30) NULL DEFAULT(''NA'')') 
0

Try, чтобы получить поля вашего temprary таблицы из таблицы tempdb.sys.columns затем перебрать эти:

select c.* 
from tempdb.sys.columns c 
inner join tempdb.sys.tables t ON c.object_id = t.object_id 
where t.name like '#TableName%'