【问题标题】:Generate random ID using cursor in SQL Server在 SQL Server 中使用游标生成随机 ID
【发布时间】:2015-06-02 03:23:20
【问题描述】:

我想生成一个随机 id,它使用表名和姓氏以及登录结束时的随机数。我无法弄清楚如何使用 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

【问题讨论】:

标签: mysql sql-server tsql cursor dml


【解决方案1】:

RAND() 函数不适合您的目的,因为它总是在批次中产生相同的数字,除非每一行都有一个新种子。使用以下内容:

SELECT [first_name]+[last_name] + 
  CAST(CAST(RAND(CHECKSUM(NEWID())) * 10 as INT) AS CHAR(1))
  as [ADMINISTRATOR ID] from administrators ;

作为您的选择。它使用 NEWID() 为每一行生成一个 UNIQUEIDENTIFIER,用作 RAND() 函数的种子。表达式的其余部分获取一个介于 1 和 10 之间的整数,并在将其添加到字符串之前将其转换为 CHAR(1)。

【讨论】:

    【解决方案2】:

    您可以通过以下查询实现您的目标。

    SELECT [first_name]+[last_name]
    +cast (ROW_NUMBER() over(order by first_name ) as varchar(100))as [ADMINISTRATOR ID] 
    from administrators ;
    

    【讨论】:

    • OP 在末尾寻找单个随机数
    • 您希望在名称末尾生成多少随机数。
    猜你喜欢
    • 2018-01-12
    • 2015-01-10
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    相关资源
    最近更新 更多