Generowanie dużych ciągów dla danych testowych

12

Niedawno próbowałem utworzyć kilka dużych ciągów zawierających ogólne dane testowe na pytanie tutaj . Wygląda na to, że kiedyś znałem sposób na pomnożenie łańcucha. Jednak nie pamiętam już składni.

Szukam czegoś takiego:

SELECT 'A' + ('a' * 1000) + 'ha!'

Wymyślić „Aaaaaaaaaaaaaaaha!” (Cóż, znacznie dłużej, oczywiście.)

Czy jest to możliwe w T-SQL? (A może myślę o innym języku?) Czy są też inne techniki generowania dużych ciągów?

Richard
źródło

Odpowiedzi:

19

Możesz użyć REPLICATE:

SELECT 'A' + REPLICATE('a', 1000) + 'ha!';
Aaron Bertrand
źródło
3
Pamiętaj, że musisz podać (MAX) znak wejściowy, aby wygenerować ciągi większe niż 8060 znaków: WYBIERZ REPLIKACJĘ (CAST ('a' AS varchar (MAX)), 15000). W razie potrzeby pamiętaj, aby przesłać go do nvarchar (MAX).
Mark S. Rasmussen
1
Dzięki Mark. Są też inne potencjalne problemy REPLICATE, w zależności od tego, jak Richard go użyje (np. Może zachowywać się inaczej przy użyciu długości varchar vs. char), dlatego właśnie połączyłem REPLICATEsłowo kluczowe, aby wskazać dokumentację, zamiast próbować cofnij wszystkie potencjalne problemy z dokumentacji tutaj.
Aaron Bertrand