2015-12-11 5 views
1

У меня есть таблица с 59 столбцами и более 17 тыс. Строк. В некоторых столбцах множество строк имеет NULL.Как удалить 'NULL' из результатов запросов SQL Server 2008

Я хочу удалить NULL, чтобы запросы возвращали пробел (''), а не NULL.

Могу ли я запустить некоторую функцию обновления, которая заменяет все NULL на ''?

Использование SQL Server 2008R2 Management Studio.

UPDATE my_table 
SET column_1 = REPLACE (column_1,NULL,'') 

Но это навсегда, чтобы сделать это для всех 59 столбцов!

Какая уловка, команда?

+0

Ваш 'заменить()' не будет работать. –

ответ

5

Используйте стандартный SQL COALESCE:

UPDATE my_table 
SET column_1 = COALESCE(column_1,'') 
    , column_2 = COALESCE(column_2,'') 
    ... 
WHERE column_1 IS NULL OR 
     column_2 IS NULL OR 
     ...     -- avoid empty updates 
; 

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

Не используйте ISNULL , которая в основном является дублирование стандартного COALESCE в некоторых СУБД - и не доступны в других. (Ну, есть тонкие отличия, read the manual for details или even more detail here.)

Конечно, пустая строка ('') действительна только для типов строк. Например, для типов номеров.

5

Использование функции isnull. Возвращает указанный значение, если нуль находится в колонке

Select isnull(col1,'') 
+0

Это полезная функция, которую я буду использовать в другом месте, но не то, что я искал сегодня. – Bevan

0

Попробуйте это:

UPDATE yourtable SET column1 = ' ' WHERE column1 = NULL 
Смежные вопросы