Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL remplace tous les NULL

Comme beaucoup l'ont dit ici, la meilleure approche est ISNULL(), cependant si vous voulez un moyen simple de générer tous ces ISNULL(), utilisez le code suivant :

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'

Cela rendra le travail fastidieux beaucoup plus facile, il vous suffira ensuite de modifier la sortie pour tenir compte des différents types de champs (int, varchar, dates, etc.)

Edit :prise en compte de divers types de données avec des valeurs par défaut.