Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SQL substitui todos os NULLs


Como muitos aqui disseram, a melhor abordagem é ISNULL(), no entanto, se você quiser uma maneira fácil de gerar todos esses ISNULL(), use o seguinte código:
SELECT 'ISNULL([' + COLUMN_NAME + '], ' + 
  CASE 
    WHEN DATA_TYPE = 'bit' THEN '0'
    WHEN DATA_TYPE = 'int' THEN '0'
    WHEN DATA_TYPE = 'decimal' THEN '0'
    WHEN DATA_TYPE = 'date' THEN '''1/1/1900'''
    WHEN DATA_TYPE = 'datetime' THEN '''1/1/1900'''
    WHEN DATA_TYPE = 'uniqueidentifier' THEN '00000000-0000-0000-0000-000000000000'
    ELSE '''''' -- everything else get's an empty string
  END + ') AS [' + COLUMN_NAME + '],'
FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TableName'

Isso tornará o trabalho tedioso muito mais fácil, basta editar a saída para considerar os vários tipos de campo (int, varchar, datas, etc.)

Edit:contabilizando vários tipos de dados com valores padrão.