2010-12-29 10 views
2

Wie kann ich eine zufällige Zeichenfolge generieren? Ich schrieb folgendes, das gab mir nur einen einzigen Brief!Wie kann ich zufällige Zeichenfolgen in TSQL generieren

declare @alphaCount int 
set @alphaCount = @alphaCount +1 
CHAR(@alphaCount) 

Vielen Dank im Voraus!

+2

SQL ist eine domänenspezifische Abfragesprache, keine vollwertige Programmiersprache. Generieren einer zufälligen Zeichenfolge auf dem Client, nicht auf der Seite der Datenbank. – Davita

+0

Ich möchte meine Datenbank mit Daten füllen !! – Lisa

+0

Welche Art von zufälligen Zeichenfolge benötigen Sie? (Länge und akzeptable Zeichen) –

Antwort

6

Dadurch erhalten Sie 10.000 Zeilen im angegebenen Format.

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()))%26) 
      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 
1

Füllen Sie eine temporäre Tabelle mit einer Liste zufälliger Wörter. Dann benutze CROSS JOIN, um jedes Wort mit jedem anderen Wort zu kombinieren, um mit wenig Aufwand eine ganze Menge an Daten zu erhalten.

select l.word+' '+r.word from #Words as l 
cross join #Words as r 
+0

Wie kann ich eine Liste von zufälligen Wörtern erstellen? – Lisa

+0

@Shaza, machen Sie einfach etwas! Der Kreuz-Join erzeugt das Quadrat der Anzahl der Eingaben, die Sie ihm geben. Wenn Sie 20 Wörter eingeben, werden 400 Kombinationen generiert. Wenn Sie es mit 1000 Wörtern füttern, wird es 1000000 generieren. –

1

This procedure wird funktionieren. Sie müssen möglicherweise eine Funktion damit erstellen, aber es hat die richtigen Ideen.

0

Dies sollte den Trick, wie zu

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; 

Wenn Sie dies eine benutzerdefinierte Funktion machen wollte, ich mochte die Option ‚steve‘ in diesem Artikel hatte. here

Verwandte Themen