我有一个包含5列的sql server表
KeyInstn, KeyFndg, KeyIndex, KeyGeographyTree, KeyDevelopmentEntityRole
我试图实现的是通过应用sql server表检查仅允许以下行:
仅当 KeyGeographyTree
是有人住的 KeyInstn, KeyFndg, KeyIndex
必须为null且 KeyDevelopmentEnityRole
必须等于12。
什么时候 KeyInstn
人口众多, KeyGeographyTree
但其他两列 KeyIndex, KeyFndg
必须为空。
其他两种组合,即 KeyIndex
以及 KeyGeographyTree
有人居住,那么 KeyInstn and KeyFndg
必须为null,或者 KeyFndg
以及 KeyGeographyTree
有人居住,那么 KeyInstn
以及 KeyIndex
必须为空。
换句话说,任何一列 KeyInstn, KeyFndg, KeyIndex
可以同时填充,但是 KeyGeographyTree
可以单独填充,也可以与其他3列中的任意一列一起填充。
这是我写的表格检查,我正在调整它:
ISNUMERIC(KeyInstn) + ISNUMERIC(KeyFndg) + ISNUMERIC(KeyIndex) = 1
OR (KeyGeographyTree IS NOT NULL AND KeyDevelopmentEntityRole = 12))
下列情况不应通过,目前正在通过
keyinstn=123、keygeographytree=999和keydevelopmententityrole=12
keyinstn=123,keygeographytree=null,keydevelopmententityrole=12
1条答案
按热度按时间iszxjhcz1#
下表检查满足所有情况:
(ISNUMERIC(KeyInstn) + ISNUMERIC(KeyFndg) + ISNUMERIC(KeyIndex) = 1 AND KeyDevelopmentEntityRole <> 12) OR (ISNUMERIC(KeyInstn) + ISNUMERIC(KeyFndg) + ISNUMERIC(KeyIndex) = 0 AND ISNUMERIC(KeyGeographyTree) = 1 AND KeyDevelopmentEntityRole = 12)