当前位置:  开发笔记 > 数据库 > 正文

在一组条件中,T-SQL恰好是1个条件

如何解决《在一组条件中,T-SQL恰好是1个条件》经验,为你挑选了1个好方法。

在T-SQL中表达的最简单的方法是,只有1和1个布尔条件中的1个为真(需要在CHECK约束中使用)?

XOR适用于2个条件,例如,A XOR B将确保设置正好1,但它不适用于3个条件:

一种解决方案是从中获取某种类型的集合,过滤条件为真,执行和聚合/求和并检查结果是否等于1.



1> Damien_The_U..:

我会按照以下方式构建你CHECK的:

CHECK (
    CASE WHEN  THEN 1 ELSE 0 END +
    CASE WHEN  THEN 1 ELSE 0 END +
    CASE WHEN  THEN 1 ELSE 0 END
    = 1
)

它略显冗长,但希望看到你的意图是可读的.它也比XOR更容易扩展到其他类似的要求(例如"必须匹配5个条件中的2个"可以遵循相同的结构)

对于SQL Server 2012或更高版本,您可以更简洁IIF:

CHECK (
    IIF(,1,0) +
    IIF(,1,0) +
    IIF(,1,0)
    = 1
)

推荐阅读
携手相约幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有