我想在SQL Server中创建一个包含以下所有可能组合的表,确保每条记录都是唯一的:
Alpha, alpha, alpha, alpha, numeric, numeric numeric
E.g。
AAAA000-ZZZZ999
任何帮助将不胜感激。
答案 0 :(得分:5)
这里有数以万计的组合。但你可以这样做:
with alpha as (
values ('A'), ('B'), . . ., ('Z')
),
digits as (
values ('0'), ('1'), ('2'), ('3'), ('4'), ('5'), ('6'), ('7'), ('8'), ('9')
)
select (a1 + a2 + a3 + a4 + d1 + d2 + d3)
from alpha a1 cross join
alpha a2 cross join
alpha a3 cross join
alpha a4 cross join
digits d1 cross join
digits d2 cross join
digits d3;
. . .
用于剩余的字母。有通过递归CTE或其他方法生成它们的快捷方式(但明确列出它们确实使查询的意图更加清晰)。
我应该补充说有456,976,000个组合,所以如果生成所有这些组合需要一定的时间,我们不会感到惊讶。