Прежде чем ваш мозг взрывается, я видел this.Функция против Эффективность случая
Мой вопрос с учетом моей конкретной ситуации. Я пытаюсь оптимизировать очень большую базу данных и пытаюсь переписать некоторые вызовы, потому что она была преобразована из Orical DB в MS DB.
У меня есть функция, которая вызывается из хранимой процедуры, которую я хочу заменить, и я думаю, что все будет хорошо, но я не уверен во всех случаях.
Это текущая функция, которая вызывается.
ALTER function [dbo].[GREATEST_DATETIME]
(
@i1_p datetime,
@i2_p datetime
)
returns datetime as
begin
declare @r_l datetime
if @i1_p is null or @i2_p is null
return null
set @r_l = @i1_p
if @i2_p > @r_l
set @r_l = @i2_p
return @r_l
end
Я хочу заменить вызов функции полностью этим.
select CASE WHEN @date1 >= @date2 THEN @date1 ELSE @date2 END
Оба они определяют наибольшую дату из 2-х дат, но не уверены, что они охватывают все мои базы.
После тестирования
declare @date1 datetime
declare @date2 datetime
set @date1 = '2015-05-01'
set @date2 = null
select CASE WHEN @date1 >= @date2 THEN @date1 ELSE @date2 END
Это возвращает нуль, который является желаемому результату
Вот мой окончательный результат, который будет работать
declare @date1 datetime
declare @date2 datetime
set @date1 = null
set @date2 = '2015-05-01'
select CASE WHEN @date1 is null or @date2 is null then null WHEN @date1 >= @date2 THEN @date1 ELSE @date2 END
«Мой вопрос с учетом ...» ... Но вы не задаете никаких вопросов. Какой у Вас вопрос? – Adam
Другое, тогда случай, когда либо «null» да, это эквивалентно. –
RE: Ваша тестовая попытка 'set @ date1 = null set @ date2 = '2015-05-01'' –