Как поместить предложение where для нескольких столбцов при одновременном обновлении нескольких столбцов? - PullRequest
1 голос
/ 02 сентября 2011

Я хочу обновить более 10 столбцов одновременно, и моя проблема в том, что я хочу поставить условие where для всех этих столбцов.

Мой код:

UPDATE Customer AS c
                    SET 
                        name = a.name,
                        address= a.address,
                        telephone = a.telephone,
                        --
                        --
                        --


        FROM Customer a 
                      INNER JOIN 
                        ( SELECT casenumber
                               , max(currentDate) AS md 
                          FROM Customer 
                          GROUP BY casenumber
                        ) AS z 
                      ON  z.casenumber = a.casenumber
                      AND z.md = a.currentDate
                    WHERE (a.casenumber = c.casenumber)

В приведенном выше заявлении я хочу добавить условие, чтобы обновлять столбцы, только когда они не равны 0.

например,

UPDATE Customer AS C
    SET name = a.name,
    address= a.address,
    ...

    ..
     WHERE a.name <> 0,
            a.address <> 0, 
            a.telephone <> 0
            ....
            ...

Можно ли поставить условие где проверять каждый столбец?

Любые предложения приветствуются ..

1 Ответ

2 голосов
/ 02 сентября 2011

Примерно так (при условии, что name <> 0 является опечаткой, а ваши имена действительно являются символьными столбцами)

 UPDATE customer AS c
     SET name = CASE WHEN name <> '' THEN a.name ELSE name END,
         address = CASE WHEN address <> '' THEN a.address ELSE address END

Это существенно обновляет столбец до его текущего значения, если он пуст.

Обратите внимание, что это не относится к значениям NULL!Если вам нужно одинаково относиться к NULL и '', вам нужно использовать coalesce(name, '').

...