我如何构建我的 WHERE 子句以根据此特定条件提取记录?
How do I construct my WHERE clause to pull records based on this specific criteria?
我正在使用 SQL Server 2014
,并且我有一个针对特定 Table (t1) 的 T-SQL
查询 运行。
Table t1
包括名为 [HR_LeftDate]、[Payroll_LeftDate] 和 [Status].
的 3 个列
在 table 中,有些记录的 [HR_LeftDate] 和 [Payroll_LeftDate] 为 'NULL',而其他一些记录的空白(对于两列)。
我需要提取这些记录,我的 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 子句将可为空的值设为空字符串并进行如下比较:
SELECT * FROM [t1]
WHERE ISNULL([HR_leftDate],'') = '' AND ISNULL([Payroll_leftDate],'') = ''
AND [Status] = 'Left'
AND
运算符的 precedence 高于 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
数据类型存储日期和时间值。
我正在使用 SQL Server 2014
,并且我有一个针对特定 Table (t1) 的 T-SQL
查询 运行。
Table t1
包括名为 [HR_LeftDate]、[Payroll_LeftDate] 和 [Status].
在 table 中,有些记录的 [HR_LeftDate] 和 [Payroll_LeftDate] 为 'NULL',而其他一些记录的空白(对于两列)。
我需要提取这些记录,我的 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 子句将可为空的值设为空字符串并进行如下比较:
SELECT * FROM [t1]
WHERE ISNULL([HR_leftDate],'') = '' AND ISNULL([Payroll_leftDate],'') = ''
AND [Status] = 'Left'
AND
运算符的 precedence 高于 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
数据类型存储日期和时间值。