首页 > 解决方案 > 将随机名称作为 SQL 值插入

问题描述

所以我创建了一个数据库,它是一个有客户的银行;但在那个数据库中,我编写了一个返回 50 个客户的函数(或者在我的例子中,50 个 John Smiths)

...因为我在该代码中硬编码了我的客户的姓名 John Smith 和他的电子邮件地址。现在我想找到一种方法来用一个变量替换我硬编码的名字,这个变量将只返回随机名称。像 James Doe、Sally Fields 等……

请指出正确的方向,用随机名称正确替换 John Smiths。

这是我的函数的代码,因此您可以了解我在说什么以及我在寻找什么。

BEGIN
     DECLARE @loopCount tinyint 
     DECLARE @tableCount tinyint
     DECLARE @randomSSN int
     SELECT @loopCount = 1
     WHILE (@loopCount <= 50)
        BEGIN
            SELECT @randomSSN = RAND()*(999999998)+1
            SELECT @tableCount = COUNT(*) FROM Customer WHERE SSN = @randomSSN
            IF @tableCount = 0
                 INSERT INTO Customer (FirstName, LastName, Email, SSN) VALUES ('John', 'Smith', 'JohnSmith@gmail.com', @randomSSN)
                SELECT @loopCount = @loopCount +1
        END
END

标签: sql-serverrandomnames

解决方案


你可以使用这样的东西

BEGIN
 DECLARE @loopCount tinyint 
 DECLARE @tableCount tinyint
 DECLARE @randomSSN int
 SELECT @loopCount = 1
 WHILE (@loopCount <= 50)
    BEGIN
        SELECT @randomSSN = RAND()*(999999998)+1
        SELECT @tableCount = COUNT(*) FROM Customer WHERE SSN = @randomSSN
        IF @tableCount = 0

             WITH cte as (
                  SELECT *
                   FROM (VALUES ('Ann','smith'),('Sarah','Paulson'),('Phil','Coulson'),('John','Palmer'),
                                ('Steve','Jobs'),('Bill','Gates')) AS t(first_name,Last_name)
                  )
             INSERT INTO Customer (FirstName, LastName, Email, SSN) 
             VALUES (
             (select top 1 first_name from cte order by newid()), 
             (select top 1 Last_name from cte order by newid()), 
             'JohnSmith@gmail.com', 
              @randomSSN)

            SELECT @loopCount = @loopCount +1
    END
END

推荐阅读