在本地临时表中创建随机数

时间:2018-12-07 17:06:10

标签: sql sql-server

今天,我有点两难。我的任务是创建一个本地临时表,该表将包含教师的名字,姓氏,校园和新的ID号。 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'); 
INSERT INTO Faculty VALUES ('Smith', 'John', 'Economics', 'Kent'); 
INSERT INTO Faculty VALUES ('Jones', 'Sally', 'English', 'South'); 
INSERT INTO Faculty VALUES ('Black', 'Bill', 'Economics', 'Kent'); 
INSERT INTO Faculty VALUES ('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); 
INSERT INTO Course VALUES ('54321', 3, 'B', 18); 
INSERT INTO Course VALUES ('13524', 1, 'B', 7); 
INSERT INTO Course VALUES ('24653', 1, 'C', 29); 
INSERT INTO Course VALUES ('98765', 5, 'A', 35); 
INSERT INTO Course VALUES ('14862', 2, 'B', 14); 
INSERT INTO Course VALUES ('96032', 1, 'C', 8); 
INSERT INTO Course VALUES ('81256', 5, 'A', 5); 
INSERT INTO Course VALUES ('64321', 2, 'C', 23); 
INSERT INTO Course VALUES ('90908', 3, 'A', 38); 

我正在查看的消息源,仍需要更好地理解:Generating a random & unique 8 character string using MySQL

编辑:实际上,运行查询不会显示任何信息,而只是显示列名。

编辑:仍然需要帮助,我不知道编辑这篇文章是否会引起麻烦

编辑:所以我决定尝试并仅使用“ RAND()”。我现在可以看到显示的结果,但是,数字集并不是全部都是随机的。

编辑:更新了RANDOM ID的公式,它以某种方式起作用,只是不使每一行都是唯一的随机数。

0 个答案:

没有答案