sql - 包含从 AA 到 ZZ 的所有可能组合的表格
问题描述
该表的结果当前无法在 SQL 中管理,因此我使用了替代方法。感谢任何对此进行调查的人。
我希望在 SQL (Microsoft) 中创建一个表,其中包含从 AA 到 ZZ 的所有可能组合,包括“NULL”,因此“AA”是可能的组合之一,然后“AA”和“ZZ”是另一种组合。我从以下开始,但因为太复杂而退出了“AZ”:
with T_VALUE as (
select 'AA' as Value union
select 'AB' union
select 'AC' union
select 'AD' )
select distinct
Value as Value_1,
null as Value_2,
null as Value_3,
null as Value_4
from T_VALUE
union
select A.Value,
B.Value,
null,
null
from T_VALUE A
cross join T_VALUE B
where A.Value < B.Value
union
select A.Value,
B.Value,
C.Value,
null
from T_VALUE A
cross join T_VALUE B
cross join T_VALUE C
where A.Value < B.Value
and B.Value < C.Value
union
select A.Value,
B.Value,
C.Value,
D.Value
from T_VALUE A
cross join T_VALUE B
cross join T_VALUE C
cross join T_VALUE D
where A.Value < B.Value
and B.Value < C.Value
and C.Value < D.Value;
这确实导致了以下结果:
V1 V2 V3 V4
AA NULL NULL NULL
AA AB NULL NULL
AA AB AC NULL
AA AB AC AD
AA AB AD NULL
AA AC NULL NULL
AA AC AD NULL
AA AD NULL NULL
AB NULL NULL NULL
AB AC NULL NULL
AB AC AD NULL
AB AD NULL NULL
AC NULL NULL NULL
AC AD NULL NULL
AD NULL NULL NULL
我也可以使用仅存储在一个字段中的值。而且我也只需要建表一次。我可以用它来引用可能组合的项目。我知道会有很多可能性。
关于如何生成查询以更简单的方式编写此表的任何想法?
更新:我确实需要 AA - ZZ 的所有可能组合,包括“NULL”值,因为一个选项也可以是“AA”或“BC”
解决方案
with list as
(
select ascii('A') as i
union all
select i + 1
from list
where i < ascii('Z')
)
select char(c1.i) + char(c2.i)
from list c1
cross join
list c2
union all
select null
推荐阅读
- c++ - Cplex C++ 中的不可行行
- javascript - 使用 extends 子类化 Promise 内置
- postgresql - 什么 PostgreSQL 类型有利于存储字符串数组并在之后提供快速查找
- flutter - Flutter:动态隐藏/显示小部件
- macos - CDN:中继回购更新失败 - 12 个错误:
- android - 在 Flutter 项目和 Unity 导出项目中使用相同库时出现重复类错误
- python - Python 程序在一台机器上运行异步获取任务的速度非常快,但在其他机器上却没有
- codeigniter - 无法加载您的默认控制器 请确保您的 Routes.php 文件中指定的控制器有效
- javascript - 选择声明为变量的多个元素
- javascript - javascript中用于添加操作的数组计算