SQL Server:唯一标识符列表

时间:2016-12-19 01:23:50

标签: sql sql-server

我想在SQL Server中创建一个包含以下所有可能组合的表,确保每条记录都是唯一的:

Alpha, alpha, alpha, alpha, numeric, numeric numeric 

E.g。

AAAA000-ZZZZ999

任何帮助将不胜感激。

1 个答案:

答案 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个组合,所以如果生成所有这些组合需要一定的时间,我们不会感到惊讶。