Как обновить все столбцы, которые имеют значение NULL, до пустой строки? - PullRequest
7 голосов
/ 09 августа 2011

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

В настоящее время у меня есть следующий запрос, но он будет обновлять только один столбец, и я хочу обновить все столбцы, которые имеют значение NULL, до пустой строки.

UPDATE table SET column1='' WHERE column1 IS NULL

Ответы [ 5 ]

21 голосов
/ 09 августа 2011

Вы можете обновить несколько столбцов одним оператором, выполнив что-то вроде этого:

UPDATE table SET column1='', column2='', column3='' WHERE column1 IS NULL

HOWEVER Это будет обновляться только на основе предложения where.

Для того, что вы пытаетесь сделатьвам понадобятся отдельные операторы.

UPDATE table SET column1='' WHERE column1 IS NULL
UPDATE table SET column2='' WHERE column2 IS NULL
UPDATE table SET column3='' WHERE column3 IS NULL

РЕДАКТИРОВАТЬ Попробуйте это:

UPDATE table SET column1= IfNull(column1,''), column2= IfNull(column2,'') , column3= IfNull(column3,'') 
2 голосов
/ 05 октября 2013

Вы можете обновить столбец для себя и проверить на ноль там ...

UPDATE table SET 
column1 = ISNULL(column1,''),
column2 = ISNULL(column2,''),
column3 = ISNULL(column3,'')

и т.д ..

Нет необходимости в предложении WHERE, потому что вы хотите, чтобы оно выполнялось для всех записей.

1 голос
/ 28 ноября 2017

На самом деле вы можете сделать что-то вроде этого

DECLARE @sql varchar(max)=''

select @sql= @sql+''+ c.name + '= CASE WHEN ' +c.name+'=''''THEN NULL ELSE ' +c.name+' end,
'
from sys.tables t
JOIN sys.columns c
ON t.object_id = c.object_id
WHERE t.object_id = 1045578763 -- Your object_id table


PRINT 'UPDATE <TABLE>
        SET '+@sql
0 голосов
/ 09 августа 2011

Вам необходимо указать столбцы, которые вы хотите изменить. Поэтому, если в вашей таблице четыре столбца, вам нужно несколько запросов, например:

UPDATE table SET column1 = '' WHERE column1 IS NULL;
UPDATE table SET column2 = '' WHERE column2 IS NULL;
UPDATE table SET column3 = '' WHERE column3 IS NULL;
UPDATE table SET column4 = '' WHERE column4 IS NULL;

Это становится немного проще, если вы просто хотите установить все столбцы в пустую строку при условии, что только один из столбцов имеет значение NULL, но это может быть не то, что вам нужно:

UPDATE table SET column1 = '', column2 = '', column3 = '', column4 = ''
WHERE (column1 IS NULL
OR column2 IS NULL
OR column3 IS NULL
OR column4 IS NULL);
0 голосов
/ 09 августа 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...