Я знаю, что этот вопрос задан довольно регулярно, но все же хотел бы знать, как это сделать.Обновление нескольких столбцов sql
Я пытаюсь обновить три значения, firstname, middlename, lastname из таблицы имен. Эмплид выбирается из промежуточного стола. Я хотел бы знать, как установить NVL для этого.
Блок запрос будет выглядеть следующим образом:
update staging_table
set firstname, middlename,lastname =
(select firstname,middlename,last
from names
where names.emplid = staging_table.emplid)
Я хочу, чтобы проверить нулевые значения, так как есть случаи, когда MiddleName равна нуль.
Часть вторая: У меня есть работа для этого на данный момент, но все же хотелось бы знать, как лучше техника влияет на производительность.
В настоящее время, я использовал это обновление запроса:
update staging_table set first_name = nvl((select first_name from names where emplid = staging_table.emplid),' ')
update staging_table set middle_name = nvl((select middle_name from names where emplid = staging_table.emplid),' ')
Есть ли лучший метод, чем это?
Я проверил для функции coalesce
в оракуле, но проверяет весь результат, и если любой из параметров имеет значение null, только тогда возвращается значение null. Здесь мне нужно проверить нулевые значения для отдельных полей.
Спасибо за руководство.
Спасибо за ответ, нет, я обновляя эту промежуточную таблицу, путем объединения с таблицей имен. Я не добавил данные для имен и других полей в таблице и хочу обновить их. Я попытался использовать nvl, но это не удалось. – vamosrafa
Простите, я не понимаю @vamosrafa ... как то, что вы сделали, так и то, что я сказал, делать то, что вы хотите, и вам не нужно использовать NVL. – Ben
Только один маленький бит информации. Когда вы намереваетесь использовать оператор 'merge', а версия oracle - 11.2.0.2, и в обновляемом столбце (-ах) есть ограничения проверки, они будут проигнорированы. Ошибка 9285259. –