Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL ersetzt alle NULLen

Wie viele hier gesagt haben, ist der beste Ansatz ISNULL(), aber wenn Sie einen einfachen Weg suchen, all diese ISNULL()'s zu generieren, verwenden Sie den folgenden Code:

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'

Das macht die mühsame Arbeit viel einfacher, Sie müssen dann nur noch die Ausgabe bearbeiten, um die verschiedenen Feldtypen (int, varchar, Datumsangaben usw.) zu berücksichtigen

Bearbeiten:Berücksichtigung verschiedener Datentypen mit Standardwerten..