Sql 如何构造WHERE子句以基于此特定条件提取记录?
我使用的是Sql 如何构造WHERE子句以基于此特定条件提取记录?,sql,sql-server,null,where-clause,Sql,Sql Server,Null,Where Clause,我使用的是SQLServer2014,我有一个针对特定表(t1)运行的T-SQL查询。 表t1包括名为[HR\u LeftDate]、[Payroll\u LeftDate]和[Status]的3列 在该表中,有些记录的[HR_LeftDate]和[Payroll_LeftDate]为“NULL”,有些记录的[HR_LeftDate]和[Payroll_LeftDate]为空(两列均为空) 我需要提取这些记录,我的T-SQL查询如下: SELECT * FROM [t1] WHERE ([HR_
SQLServer2014
,我有一个针对特定表(t1)运行的T-SQL
查询。
表t1
包括名为[HR\u LeftDate]、[Payroll\u LeftDate]和[Status]的3列
在该表中,有些记录的[HR_LeftDate]和[Payroll_LeftDate]为“NULL”,有些记录的[HR_LeftDate]和[Payroll_LeftDate]为空(两列均为空)
我需要提取这些记录,我的T-SQL查询如下:
SELECT *
FROM [t1]
WHERE ([HR_leftDate] IS NULL AND [Payroll_leftDate] IS NULL )
OR ([HR_leftDate] = '' AND [Payroll_leftDate] = '') AND [Status] = 'Left'
我筛选[HR_LeftDate]和[HR_PayrollDate]的WHERE子句中肯定有错误,因为我没有获得这些特定记录
非常感谢您的帮助。您可以应用ISNULL子句将可空值设置为空字符串,并进行如下比较:
从[t1]中选择*
其中ISNULL([HR_leftDate],“”)=''和ISNULL([Payroll_leftDate],“”)=''
和[状态]=“左”
AND运算符的值高于OR
运算符,因此您可能需要更改WHERE
子句:
SELECT *
FROM [t1]
WHERE
(
([HR_leftDate] IS NULL AND [Payroll_leftDate] IS NULL) OR
([HR_leftDate] = '' AND [Payroll_leftDate] = '')
) AND
([Status] = 'Left')
您当前的WHERE
条款适用以下条件:
WHERE
([HR_leftDate] IS NULL AND [Payroll_leftDate] IS NULL) OR
([HR_leftDate] = '' AND [Payroll_leftDate] = '' AND [Status] = 'Left')
作为一个重要注意事项(如注释中所述),请始终使用适当的
date
和time
数据类型存储日期和时间值。向我们展示一些示例表数据和预期结果-全部为格式化文本(而不是图像)记住这一点,然后在或之前。你们是将日期存储为文本吗?我确信这只是一种奇怪的操作检查方式,它是1900-01-01
@TimBiegeleisen@TimBiegeleisen,我不能说,因为我只能访问一个视图来提取我的数据。不要将日期存储为字符串。就这么简单,我怀疑这就是“答案”,尽管OP首先不应该将日期存储为文本。