用大量列中的NULL值替换空单元格

May*_*you 9 sql sql-server null sql-server-2005

我有SQL表,有大量的列.出于某种原因,某些列具有空单元而不是NULL单元.我想让所有列中的所有空单元格都为NULL.

我知道单列的方法是:

 UPDATE your_table SET column = NULL WHERE column = ''
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何有效地为所有列执行类似的逻辑,而不必逐个编写列名.

谢谢,

Rob*_*t N 22

运行以下查询:

SELECT 'UPDATE yourtable SET ' + name + ' = NULL WHERE ' + name + ' = '''';'
FROM syscolumns
WHERE id = object_id('yourtable')
  AND isnullable = 1;
Run Code Online (Sandbox Code Playgroud)

此查询的输出将是一块SQL脚本,如下所示:

UPDATE yourtable SET column1 = NULL WHERE column1 = '';
UPDATE yourtable SET column2 = NULL WHERE column2 = '';
UPDATE yourtable SET column3 = NULL WHERE column3 = '';
-- etc...
Run Code Online (Sandbox Code Playgroud)

将该SQL脚本复制并粘贴到新查询中并运行它以更新所有列.