SQL - заменить нули на 0 в пользовательской таблице - PullRequest
0 голосов
/ 04 апреля 2011

У меня действительно странная логика, когда я получаю свою собственную таблицу с настраиваемыми пустыми полями.

Как я могу изменить все значения NULL в таблице на 0?

Извините, но с пользовательскимиЯ имею в виду поля Я не знаю названия столбцов!

Ответы [ 4 ]

5 голосов
/ 04 апреля 2011
UPDATE custom_table
   SET the_column = 0
 WHERE the_column IS NULL;
3 голосов
/ 04 апреля 2011

Запрашивая sys.columns и sys.objects, вы можете сгенерировать запрос, который изменяет каждый столбец на значение по умолчанию (указанное вами) для типов столбцов, для которых вы хотите установить ненулевое значение по умолчанию.

Нечто подобное даст вам возможность взглянуть на:

SELECT  so.name, 
        sc.name AS varname ,
        st.name AS typename ,
        sc.max_length ,
        sc.[precision] ,
        sc.scale ,
        sc.collation_name
FROM    sys.columns sc
        JOIN SYS.types st ON sc.system_type_id = st.system_type_id
                             AND sc.user_type_id = st.user_type_id
        JOIN sys.objects so ON so.object_id = sc.object_id

Затем вы можете прикрепить курсор для этого и запустить серию команд изменения / обновления на основе typename (тип столбца) и varname (имя столбца).

2 голосов
/ 04 апреля 2011

Если вы имеете в виду ВСЕ столбцы, то вы можете сделать очень дорогой запрос, который коснется всех записей и столбцов:

UPDATE mytable
SET
col1 = isnull(col1, 0),
col2 = isnull(col2, 0),
col3 = isnull(col3, 0),
col4 = isnull(col4, 0),
col5 = isnull(col5, 0)
-- etc all the numeric columns *
  • Если вы включили столбцы с датами, они переходят к '1900-01-01'
1 голос
/ 04 апреля 2011

ОБНОВЛЕНИЕ mytable SET mycol = 0 ГДЕ mycol NULL

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