如何在T-SQL中实现异或?

Ben*_*ter 4 t-sql sql-server-2008 sql-server-2008-r2

我有一个数据表,其中有一个列列表(对于此示例,归结为相关的列):

users(
  usr_pkey int identity(1, 1) primary key,
  usr_name nvarchar(64),
  ...,
)

accounts(
  acc_pkey int identity(1, 1) primary key,
  usr_key int foreign_key references users(usr_pkey),
  acc_effective datetime,
  acc_expires datetime,
  acc_active bit,
  ...,
)
Run Code Online (Sandbox Code Playgroud)

从这张表中我想抓住所有记录:

  • 该帐户属于指定的用户
  • 第一个例子:
    • 该帐户被激活今天的日期落在帐户的有效和到期日之间
  • 在第二个实例中:
    • 如果第一个实例没有识别出记录,则记录具有最近的到期日期.

所以 - 如果存在活动记录,其中今天的日期介于帐户的有效日期和到期日期之间,我想要该记录.只有在找不到匹配项时,我才希望该用户拥有最近的到期日期.

The*_*ebo 5

除非在TSQL 2008中发生了根本性的变化,否则它就是蛮力.

select *
from table
where (    ( condition 1 OR condition 2)
    AND NOT ( condition 1 AND condition 2)    )
Run Code Online (Sandbox Code Playgroud)