在 SQL 服务器中使用游标生成随机 ID
Generate random ID using cursor in SQL Server
我想生成一个随机 ID,该 ID 使用 table 名字和姓氏以及登录结束时的随机数。我无法弄清楚如何使用 RAND 函数在名称末尾添加单个随机数。请帮我。我们将不胜感激。
谢谢
DECLARE CUSTOMER_ID_CURSOR CURSOR
STATIC
FOR
SELECT [first_name]+[last_name] as [ADMINISTRATOR ID] from administrators ;
OPEN CUSTOMER_ID_CURSOR;
FETCH NEXT FROM CUSTOMER_ID_CURSOR;
WHILE @@FETCH_STATUS=0
FETCH NEXT FROM CUSTOMER_ID_CURSOR;
CLOSE CUSTOMER_ID_CURSOR
DEALLOCATE CUSTOMER_ID_CURSOR
RAND() 函数不适合您的目的,因为它总是在一个批次中生成相同的数字,除非每一行都获得一个新的种子。使用以下内容:
SELECT [first_name]+[last_name] +
CAST(CAST(RAND(CHECKSUM(NEWID())) * 10 as INT) AS CHAR(1))
as [ADMINISTRATOR ID] from administrators ;
作为你的 SELECT。它使用 NEWID() 为每一行生成一个 UNIQUEIDENTIFIER,用作 RAND() 函数的种子。表达式的其余部分获取 1 到 10 之间的整数,并在将其添加到字符串之前将其转换为 CHAR(1)。
您可以通过以下查询实现您的目标。
SELECT [first_name]+[last_name]
+cast (ROW_NUMBER() over(order by first_name ) as varchar(100))as [ADMINISTRATOR ID]
from administrators ;
我想生成一个随机 ID,该 ID 使用 table 名字和姓氏以及登录结束时的随机数。我无法弄清楚如何使用 RAND 函数在名称末尾添加单个随机数。请帮我。我们将不胜感激。 谢谢
DECLARE CUSTOMER_ID_CURSOR CURSOR
STATIC
FOR
SELECT [first_name]+[last_name] as [ADMINISTRATOR ID] from administrators ;
OPEN CUSTOMER_ID_CURSOR;
FETCH NEXT FROM CUSTOMER_ID_CURSOR;
WHILE @@FETCH_STATUS=0
FETCH NEXT FROM CUSTOMER_ID_CURSOR;
CLOSE CUSTOMER_ID_CURSOR
DEALLOCATE CUSTOMER_ID_CURSOR
RAND() 函数不适合您的目的,因为它总是在一个批次中生成相同的数字,除非每一行都获得一个新的种子。使用以下内容:
SELECT [first_name]+[last_name] +
CAST(CAST(RAND(CHECKSUM(NEWID())) * 10 as INT) AS CHAR(1))
as [ADMINISTRATOR ID] from administrators ;
作为你的 SELECT。它使用 NEWID() 为每一行生成一个 UNIQUEIDENTIFIER,用作 RAND() 函数的种子。表达式的其余部分获取 1 到 10 之间的整数,并在将其添加到字符串之前将其转换为 CHAR(1)。
您可以通过以下查询实现您的目标。
SELECT [first_name]+[last_name]
+cast (ROW_NUMBER() over(order by first_name ) as varchar(100))as [ADMINISTRATOR ID]
from administrators ;