Я просто читаю документацию к экзаменам по SQL Server 2012 и вижу следующее:
случай против isnull против слияния
Теперь я знаю, КАК использовать каждый, но я не знаю, КОГДА использовать каждый. Пожалуйста, могли бы некоторые тела уточнить. Спасибо.
Ps. Пожалуйста, могли бы мы иметь тег для вопросов экзамена?
sql-server
sql-server-2012
Стюарт Блэклер
источник
источник
COALESCE
расширена до,CASE
но, очевидно, вCASE
заявлении, которое вы пишете самостоятельно, вы можете быть более гибкими вWHEN
условиях. ДляISNULL
противCOALESCE
связанных с / продублировать?Ответы:
ISNULL - доступно только в SQL Server. Позволяет тестировать и заменять значение NULL на другое.
COALESCE - стандарт ANSI. Позволяет тестировать и заменять значение NULL на первое ненулевое значение в наборе аргументов переменной длины. Важно отметить, что приоритетность типов данных в этом
В приведенном выше примере «a» является первым ненулевым значением, но символьные данные имеют более низкий приоритет, чем целое число.
Другое соображение между ISNULL и COALESCE заключается в том, что результирующий ISNULL определен как NOT NULL, а результат вызова COALESCE - NULLable. См. Сообщение JRJ ISNULL () <> COALESCE (). Хотя это может показаться тривиальным, оптимизатор запросов может строить разные планы на основе обнуляемости столбца.
Вы можете легко проверить обнуляемость ваших выражений isnull / coalesce / case, запустив его через dmo sys.dm_exec_describe_first_result_set
CASE - также стандартная скалярная функция ANSI. Я бы посмотрел на использование CASE поверх двух предыдущих, когда у меня есть тест, который не может быть выражен простым скаляром, но это довольно слабый ответ, я признаю.
источник
COALESCE
. Еще раз спасибоCASE
технически это выражение, а не функция.ISNULL дает вам возможность вернуть 1 ответ, COALESCE не ограничен одним значением, например,
COALESCE(v1,v2,v3,v4,v5)
если V5 - единственное значение, которое не равно NULL, оно будет возвращеноисточник