Обновить значение ячейки если новое значение не null

386
20 июля 2021, 13:40

Есть такой SQL запрос

UPDATE orders SET phone = '$phone', addr = '$addr', email = '$email', status = '$status', payment_meth = '$payment_meth', id_transaction = '$id_transaction'

Как добавить проверку в запрос на то, что переменные $phone, $email... не пустые? Задача обновлять ячейки только не пустыми данными.

Что-то вроде такого:

UPDATE orders SET phone = if ('$phone' != "" else phone)

Благодарю!

Answer 1

Обычно делают через COALESCE:

phone = COALESCE('$phone', phone)

Если же интересует сравнение именно с пустой строкой, а не с NULL, то CASE:

phone = CASE WHEN '$phone' = '' THEN phone ELSE '$phone' END

Вариант для NULL, '', и строк с пробелами из комментариев:

phone = CASE WHEN TRIM('$phone') <> '' THEN '$phone' ELSE phone END
READ ALSO
Передача JSON из PHP в NodeJS

Передача JSON из PHP в NodeJS

Отправляю из PHP JSON

269
Задача по ООП (метод)

Задача по ООП (метод)

Задача вся вот: Создать класс Worker, в котором будут следующие private поля - name (имя), age (возраст), salary (зарплата) и public методы setName, getName, setAge, getAge, setSalary,...

371
Laravel — как типизировать Illuminate\Support\Collection?

Laravel — как типизировать Illuminate\Support\Collection?

Мне нужно, чтобы мой метод возвращал коллекцию, но коллекция должна иметь только бъекты заданного типа, например, ProductItem

159
Как работают групповые роуты в Laravel?

Как работают групповые роуты в Laravel?

Интересует методика обработки групповых роутов в Laravel:

278