gpt4 book ai didi

SQL复数约束

转载 作者:行者123 更新时间:2023-11-29 13:59:53 35 4
gpt4 key购买 nike

你好,我正在使用 PostegreSQL,我想限制某个数字(税号)遵守以下规则:

  • 9 位数
  • 最后一位 (z) 的计算依据:

x = 8th * 2 + 7th * 3 + 6th * 4 + 5th * 5 + 4th * 6 + 3rd * 7 + 2nd * 8 + 1st + 9

y = x % 11  
if (y == 0 || x == 1) z = 0;
else z = 11 - y

这在sql中可能吗?

最佳答案

是的,虽然麻烦,但这是可能的。它看起来像这样:

check ((col regexp_matches '^[0-9]{9}$) and
(case when (substring(col, 1, 1) * 9 + substring(col, 2, 1) * 8 + substring(col, 3, 1) * 7 +
substring(col, 4, 1) * 6 + substring(col, 5, 1) * 5 + substring(col, 6, 1) * 4 +
substring(col, 7, 1) * 3 + substring(col, 8, 1) * 2
) % 11 = 0 or
(substring(col, 1, 1) * 9 + substring(col, 2, 1) * 8 + substring(col, 3, 1) * 7 +
substring(col, 4, 1) * 6 + substring(col, 5, 1) * 5 + substring(col, 6, 1) * 4 +
substring(col, 7, 1) * 3 + substring(col, 8, 1) * 2
) = 1
then 0
else 11 -
((substring(col, 1, 1) * 9 + substring(col, 2, 1) * 8 + substring(col, 3, 1) * 7 +
substring(col, 4, 1) * 6 + substring(col, 5, 1) * 5 + substring(col, 6, 1) * 4 +
substring(col, 7, 1) * 3 + substring(col, 8, 1) * 2
) % 11
)
end) = substring(col, 9, 1) + 0
)

就我个人而言,我会将其封装在一个函数中并使用该函数。

关于SQL复数约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22620912/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com