在MSSQL中转换单行if语句

时间:2015-05-06 22:20:38

标签: sql-server tsql

我尝试在TSQL中转换此功能,但我不知道如何替换|| TSQL中的运算符。 MS SQL是否具有||的等效项?

  private bool intersects(DateTime r1start, DateTime r1end,
                        DateTime r2start, DateTime r2end)
    {
        return (r1start == r2start)
            || (r1start > r2start ?
                r1start <= r2end : r2start <= r1end);
    }

T-SQL中的语法是否正常?

IF((@r1start=@r2start)or(@r1start>@r2start))
BEGIN
    IF(@r1start<=@r2end)
        return 1;
    ELSE
        return 0;
END
ELSE
BEGIN 
    IF(@r2start<=@r1end)
        return 1;
    ELSE
        return 0;
END

3 个答案:

答案 0 :(得分:6)

你可以简化整个事情。这应该找到r1和r2是否相交:

IF (@r1start <= @r2end AND @r1end >= @r2start)
    RETURN 1
ELSE
    RETURN 0

答案 1 :(得分:0)

TSQL中的等效运算符只是单词or

答案 2 :(得分:0)

在sql server 2012中,您可以使用IIF

declare @ret int

select @ret = iif(@r1start <= @r2end and @r1end >= @r2start, 1, 0)

return @ret