在案例语句 SQL 中使用数组

Posted

技术标签:

【中文标题】在案例语句 SQL 中使用数组【英文标题】:Using Array in Case Statement SQL 【发布时间】:2021-12-27 05:26:57 【问题描述】:

我一直在尝试使下面的代码工作:

SELECT [Cell Name]
FROM ******* 

WHERE 

   [Date of maturity year] = (CASE
                             WHEN [Inforce date month] = 12 THEN [Inforce date year] + 1
                             ELSE [Inforce date year]
                             END)                   
And [Date of maturity month] in (7,8,9) 

这目前正在运行,但我想让第二个 where 条件动态化。我曾尝试使用 Case 语句,但它不起作用。

[Date of maturity month] in (CASE
                             WHEN [Inforce date month] = 12 THEN (1,2,3)
                             WHEN [Inforce date month] = 3 THEN (4,5,6)
                             WHEN [Inforce date month] = 6 THEN (7,8,9)
                             ELSE (10,11,12)
                             END)

谁能帮我解决这个问题。

【问题讨论】:

您使用的是什么 RDMBS? T-SQL 中的x IN ( 1, 2, 3 ) 运算符不是 数组类型,它只是( x = 1 OR x = 2 OR x = 3 ) 的语法简写。 T-SQL 不支持任何类型的数组类型(它确实有表值变量和参数,但不能用作列类型)。 我正在使用 SQL Server 管理工作室 SSMS 不是 RDMBS,它是 SQL Server 和 Azure SQL 的前端工具。请熟悉一些基本的数据库术语,以免让您周围的每个人感到困惑。 是的,我相信是 Microsoft SQL Server 【参考方案1】:
[Date of maturity month] - [Inforce date month] % 12 between 1 and 3

【讨论】:

这很有魅力。我也在 E​​xcel 上尝试了各种输入的条件,并且它在每次测试运行下都返回正确的输出。谢谢!! 如此强大,如此美丽的答案。模数我们的伟大之路!

以上是关于在案例语句 SQL 中使用数组的主要内容,如果未能解决你的问题,请参考以下文章

选择案例语句中的数组是不是可能?

将 java.sql.Array 创建为整数数组以用于准备好的语句 [重复]

如何在 Jquery 中搜索数组,如 SQL LIKE %value% 语句

如何在 Jquery 中搜索数组,如 SQL LIKE value% 语句 [重复]

C# SQL语句查询出来的字段放入数组中

如何在使用 SQLi 的 SQL IN 运算符的准备语句中使用 php 数组? [复制]