SQL条件SELECT可能为NULL

时间:2012-07-20 15:19:12

标签: sql sql-server-2008

我试过在stackoverflow上搜索这个,但我找不到答案。

我正在简化我的问题,因此它更容易阅读,如有必要我会扩展。

我有一个带有NAME, ADDRESS, HIRE_DATE的员工SQL表,我们最近添加了一个REHIRE_DATE来跟踪新员工何时重启公司。我想写一个SQL搜索来提取NAME, ADDRESS及其最近的雇用日期。如果他们是重新雇佣的,我会使用REHIRE_DATE字段,但如果他们是原创字段,请使用HIRE_DATE字段。我猜这是一个CASE语句,它在NULL字段中寻找REHIRE_DATE,但除此之外,我已经迷失了。

4 个答案:

答案 0 :(得分:4)

我认为您需要做的就是:

SELECT
    NAME
    , ADDRESS
    , ISNULL(REHIRE_DATE, HIRE_DATE) AS MostRecentHireDate
FROM Employee

在这种情况下,如果重新填写日期,则重新开始日期应始终大于雇用日期(在您被雇用之前,您不能重新 - 雇用。所以您总是希望采取重新雇佣的日期,除非它是空的,此时你需要雇用日期。听起来不错?

答案 1 :(得分:3)

这应该产生你想要的结果:

SELECT Name
    , Address
    , CASE WHEN REHIRE_DATE IS NULL THEN HIRE_DATE ELSE REHIRE_DATE END
FROM Employee

这将检查重新生成日期,如果是NULL,那么如果不是,您将获得雇用日期,那么您将返回重新生成日期。

答案 2 :(得分:0)

更好的是,使用IFNULL():

SELECT IFNULL(REHIRE_DATE,HIRE_DATE) FROM Employee

答案 3 :(得分:0)

您也可以使用coalesce()函数并以这种方式执行

select name, address, coalesce(rehire_date,hire_date) from table_name

如果第一个值为null,它将转到第二个值