sql - SQL Server 为每一行创建一个具有随机数的临时表
问题描述
我有点进退两难。我的任务是创建一个本地临时表,其中包含教职员工的名字、姓氏、校园和新的身份证号码。ID 号将是一个随机生成的 5 位数字。(我正在使用 Microsoft SQL Server Management Studio)
我的问题是我是随机数生成和本地临时表的新手。我相信我的大部分代码都是正确的,期望我需要制作的“随机 ID 号”。我用谷歌搜索了我的问题,唯一的问题是似乎有很多方法可以创建“随机”数字,但我不明白它背后的方法。
我在下面包含了我的代码和数据库。
我的代码:
SELECT
FirstName, LastName, Campus,
LEFT(CAST(CAST(CEILING(RAND() *100000000) AS bigint) AS varchar), 5) AS IDnumber
INTO
#LocalTemp1
FROM
Faculty;
SELECT * FROM #LocalTemp1
数据库:
CREATE TABLE Faculty
(
Faculty_ID INT PRIMARY KEY IDENTITY,
LastName VARCHAR(20) NOT NULL,
FirstName VARCHAR(20) NOT NULL,
Department VARCHAR(10) SPARSE NULL,
Campus VARCHAR (10) SPARSE NULL
);
INSERT INTO Faculty
VALUES ('Brown', 'Joe', 'Business', 'Kent'),
('Smith', 'John', 'Economics', 'Kent'),
('Jones', 'Sally', 'English', 'South'),
('Black', 'Bill', 'Economics', 'Kent'),
('Green', 'Gene', 'Business', 'South');
CREATE TABLE Course
(
Course_ID INT PRIMARY KEY IDENTITY,
Ref_Number CHAR (5) CHECK (Ref_Number LIKE '[0-9][0-9][0-9][0-9][0-9]'),
Faculty_ID INT NOT NULL REFERENCES Faculty (Faculty_ID),
Term CHAR (1) CHECK (Term LIKE '[A-C]'),
Enrollment INT NULL DEFAULT 0 CHECK (Enrollment < 40)
)
INSERT INTO Course
VALUES ('12345', 3, 'A', 24), ('54321', 3, 'B', 18),
('13524', 1, 'B', 7), ('24653', 1, 'C', 29),
('98765', 5, 'A', 35), ('14862', 2, 'B', 14),
('96032', 1, 'C', 8), ('81256', 5, 'A', 5),
('64321', 2, 'C', 23), ('90908', 3, 'A', 38);
我正在查看的一个来源,仍然需要更好的理解:Generating a random & unique 8 characters string using MySQL
重新发布此内容是因为我的最后一个内容有很多不正确,例如标签和解释。
解决方案
生成一个唯一的数字真的很痛苦。我建议您生成随机数,但要按顺序:
SELECT FirstName, LastName, Campus,
ROW_NUMBER() OVER (ORDER BY NEWID()) as IDnumber
INTO #LocalTemp1
FROM Faculty;
例如,如果您想要一个不以 0 开头的 5 位数字,则可以在该数字上加 10,000。
推荐阅读
- ruby-on-rails - 如何从 Rails 应用程序触发 BAT 文件在远程 Windows 服务器上运行?
- merge - graphql - 将来自多个解析器的结果合并为一个
- pytest - 如何从基础上导入多个级别的模块?
- python - 如何在 opencv 4.0 中使用 kivy 相机
- swift - 如何对字典对象中的时间戳进行排序
- python - python-docx如何合并行单元格
- javascript - 针对实际数据库测试 NestJS 服务
- python - 有没有什么地方可以在 VS2019 中运行 manage.py 命令行?
- javascript - 如何在角度服务之间正确共享数据
- android - 为改造模型在运行时声明多个对象