#tsql
Вопрос:
Как я могу сгенерировать случайную строку? Я написал следующее, в результате чего получилось мое единственное письмо !
declare @alphaCount int
set @alphaCount = @alphaCount 1
CHAR(@alphaCount)
Заранее спасибо!
Комментарии:
1. SQL-это специфичный для домена язык запросов, а не полноценный язык программирования. создайте случайную строку на клиенте, а не на стороне БД.
2. Я хочу заполнить свою базу данных данными!!
3. Какой тип случайной строки вам нужен? (длина и допустимые символы)
4. длина 20, допустимые символы A-Z a-z
Ответ №1:
Это даст вам 10 000 строк в указанном формате.
DECLARE @Numbers TABLE
(
n INT PRIMARY KEY
);
WITH E00(N) AS (SELECT 1 UNION ALL SELECT 1), --2
E02(N) AS (SELECT 1 FROM E00 a, E00 b), --4
E04(N) AS (SELECT 1 FROM E02 a, E02 b), --16
E08(N) AS (SELECT 1 FROM E04 a, E04 b), --256
E16(N) AS (SELECT 1 FROM E08 a, E08 b) --65,536
INSERT INTO @Numbers
SELECT TOP 10000 ROW_NUMBER() OVER (ORDER BY (SELECT 0))
FROM E16
SELECT CAST((SELECT TOP 20 CHAR(CASE
WHEN Abs(Checksum(Newid()))%2 = 0 THEN 65
ELSE 97
END Abs(Checksum(Newid()))&)
FROM @Numbers n1
WHERE n1.n >= -n2.n /*So it gets re-evaluated for each row!*/
FOR XML PATH('')) AS CHAR(20))
FROM @Numbers n2
Ответ №2:
Заполните временную таблицу списком случайных слов. Затем используйте ПЕРЕКРЕСТНОЕ СОЕДИНЕНИЕ, чтобы объединить каждое слово с каждым другим словом, чтобы получить целую тонну данных без особых усилий.
select l.word ' ' r.word from #Words as l
cross join #Words as r
Комментарии:
1. Как я могу сгенерировать список случайных слов?
2. @Shaza, просто придумай что-нибудь! Перекрестное соединение сгенерирует квадрат количества входных данных, которые вы ему дадите. Если вы скормите ему 20 слов, он сгенерирует 400 комбинаций. Если вы скормите ему 1000 слов, он сгенерирует 1000000.
Ответ №3:
Эта процедура будет работать. Возможно, вам придется создать с его помощью функцию, но у него есть правильные идеи.
Ответ №4:
Это должно помочь понять, как
DECLARE @length Integer
DECLARE @return VarChar(1000)
DECLARE @index Integer
DECLARE @value Integer
SET @length = 12
SET @return = '';
IF @length > 1000
SET @length = 1000;
IF @length <= 0
SELECT @return;
SET @index = 0;
WHILE @index < @length
BEGIN
SET @value = (64 * RAND()) 32;
SET @return = @return CHAR(@value);
SET @index = @index 1;
END
SELECT @return;
Если вы хотели сделать эту функцию определяемой пользователем, мне понравилась опция «Стив» в этой статье. здесь