Подтвердить что ты не робот

Запрос Sql для обновления базы данных, если значение не равно нулю?

У меня есть таблица, содержащая около 17 полей. Мне нужно выполнять частое обновление в этой таблице. Но проблема каждый раз, когда я могу обновлять только несколько полей. Каков наилучший способ написать запрос для обновления в таком сценарии? Я ищу вариант, в котором значение обновляется, только если оно не является нулевым.

Например, у меня есть четыре поля в базе данных Say A, B, C, D. Пользователь обновляет значение слова D. Все остальные значения остаются неизменными. Поэтому я хочу, чтобы запрос обновления обновлял только значение D, сохраняя остальные неизменными.  SO, если я положил a, b и c как null и d со значением, предоставленным пользователем. Я хочу написать запрос обновления, который обновляет только значение d как a, b и c, равно null. Это что-то достижимо?

Я использую базу данных SQLite.

Неужели кто-то может пролить свет на него?

4b9b3361

Ответ 1

Не зная вашу базу данных, сложно быть конкретным. В SQL Server синтаксис будет что-то вроде...

UPDATE MyTable 
SET 
        Field1 = IsNull(@Field1, Field1),
        Field2 = IsNull(@Field2, Field2),
        Field3 = IsNull(@Field3, Field3)
WHERE 
     <your criteria here>

ИЗМЕНИТЬ

Поскольку вы указали SQLLite... замените мою функцию IsNull на COALESCE() или поочередно просмотрите функцию IfNull.

Ответ 2

 UPDATE your_table
    SET some_column = 42
 WHERE some_column IS NOT NULL

Будет обновлен только some_column, если он не равен null

Ответ 3

Проводка решения SQL Server с двумя таблицами для потомков. Запрос объединяет две таблицы и обновляет значения, которые присутствуют. В противном случае поддерживается исходное значение.

table = table1, table2, каждая из которых имеет поле1 и поле2

update t1 WITH (ROWLOCK)
set T1.Field2 = ISNULL(T2.Field2,T1.Field2)
from Table1 T1 Join Table2 T2 
    ON T1.Field1 = T2.Field1