sql - SQL Server:由重复 AZ 组织的 100 行的列?
问题描述
我正在寻找一个有 100 行的表,第一列由字母 AZ 组织,并一直重复到 100。我最接近的是:
有一个数字列,然后使用 ASCII 值将数字转换为字母,但是这涉及首先创建数字列,然后让字母列依赖于该列,或者
我已经能够创建一个列,但是当我尝试打印整个表格时,它显示为 AAAA、BBBB、CCCC、DDDD 等。
我需要该列完全独立,这就是解决方案 #1 不起作用的原因,我找不到正确排序或组织解决方案 #2 的方法,使其成为 A、B、C 而不是它的方式现在打印。上下文截图:
我一直在使用此代码来创建表:
SELECT n
FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) t(n)
)
SELECT n1.n + n10.n * 10 as col
INTO dbo.table1
FROM nums n1
CROSS JOIN nums n10;
然后对于解决方案1,我尝试了这个:
ALTER TABLE numbers
ADD letters AS CHAR(num % 26 + 65);
SELECT * FROM numbers
ORDER BY num;
对于解决方案2,这个:
ALTER TABLE table1
ALTER COLUMN col VARCHAR(3);
UPDATE table1
SET col = col % 26 + 65;
UPDATE table1
SET col = CHAR(col);
SELECT * FROM table1
ORDER BY col;
我已经在这几个小时了,在两种解决方案中尝试不同的东西来得到答案。
提前致谢。
解决方案
如果要反复循环生成字母,可以使用递归 CTE:
with cte as (
select convert(varchar(max), 'A') as letter, 1 as n
union all
select (case when letter < 'Z' then convert(varchar(max), char(ascii(letter) + 1)) else 'A' end),
n + 1
from cte
where n < 100
)
select letter
from cte;
您可以使用insert
或select into
将值放入表中。
如果您想要超过 100 行,则需要添加option (maxrecursion 0)
.
推荐阅读
- android - 在 Android 应用程序中验证令牌是否异常?
- unit-testing - 为期望按键继续的函数编写 Golang 单元测试
- android - 使用自拍杆在程序中做某事
- python - Pandas 滚动适用于 df,其中根据当前行中的值进行过滤
- django - django 的无限滚动在向下滚动时不加载下一页
- javascript - 单击对象时显示信息的方式
- java - 声明的对象无法使用
- java - java如何在属性中配置注释调度程序fixedDelay
- image - 包含 nanoiis 和 sqlcmd 实用程序的自定义 docker 映像
- c# - 如何将 TimeSpan 舍入到一位数毫秒