SQL генерация случайных значений для полей таблицы

Написал код для генерации случайных номеров телефонов и имен людей, но проблема возникает в том, что при генерации имен людей могут также выводиться на экран нулевые значения (NULL). Как можно это исправить?

DECLARE @counter int;
SET @counter = 1;
WHILE @counter < 10
   BEGIN
      SELECT ROUND(RAND()*1e7,0) PhoneNumber, 
      CHOOSE( CAST(RAND() * 3 + 1 AS INT),'Bill','Steve','Jack') FName
      SET @counter = @counter + 1
   END;

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Попробуйте следующее решение.

SQL

DECLARE @counter INT = 1
    , @min INT = 1
    , @max INT = 3;

WHILE @counter < 10 BEGIN
    ;WITH rs AS
    (
        SELECT ROUND(RAND()*1e7,0) AS PhoneNumber
            , seq = @min + ROUND(RAND() * (@max - @min), 0)
    )
    SELECT PhoneNumber, seq
        , CHOOSE(seq, 'Bill', 'Steve', 'Jack') AS FName
    FROM rs;

    SET @counter += 1;
END;
→ Ссылка