在SQL Server中针对相同条件比较多个列的速记?

时间:2018-11-20 17:27:16

标签: sql sql-server tsql

是否存在允许您将WHERE子句中的同一条件下的多个列进行比较的简写形式?

SELECT * 
FROM [Table]
WHERE [Date1] BETWEEN x AND y
OR [Date2] BETWEEN x AND y
OR [Date3] BETWEEN x and y
OR [Date4] BETWEEN x and y

复制并粘贴此条件并将[Date x]替换为每一列并不是世界末日,但这肯定不是很有趣。

2 个答案:

答案 0 :(得分:2)

您还可以这样编写查询(在SQL Server 2008或更高版本中):

Date1=x OR Date2=x OR Date3=x OR Date4=x

但是,我认为这样做没有任何好处(就性能或可读性而言)。

当然,如果您需要写x IN (Date1, Date2, Date3, Date4),情况会有所不同,因为在这种情况下,您只需写{{1}}即可。

答案 1 :(得分:1)

您可以使用<div>cross apply,但是结果比现在的代码还要麻烦:

values

话虽如此,我同意Sean Lange的评论-似乎表结构设计不当,所有这些日期值都应该放在不同的表中,该表以一对多关系引用了该表。< / p>