Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come funziona la funzione REPLICATE() in SQL Server (T-SQL)

In SQL Server, T-SQL REPLICATE() La funzione ripete un valore stringa un numero specificato di volte e restituisce il risultato.

La funzione accetta due argomenti; la stringa di input e il numero di volte che deve essere ripetuta.

Sintassi

La sintassi è questa:

REPLICATE ( string_expression ,integer_expression )

Dove espressione_stringa è la stringa di input. Possono essere dati caratteri o binari.

E espressione_intera è un numero intero che specifica quante volte ripetere la stringa di input. Questo può qualsiasi tipo di intero, incluso bigint .

Nota che se il primo argomento non è di tipo varchar(max) o nvarchar(max) , la funzione tronca il valore restituito a 8.000 byte. Per restituire valori maggiori di 8.000 byte, è necessario eseguire il cast del primo argomento in modo esplicito al tipo di dati di grande valore appropriato.

Esempio 1 – Utilizzo di base

Ecco un esempio di come funziona:

SELECT REPLICATE('Dog ', 3) AS Result;

Risultato:

+-----------+
| Result    |
|-----------|
| DogDogDog |
+-----------+

Esempio 2:aggiungere uno spazio

Possiamo anche aggiungere uno spazio all'esempio precedente:

SELECT REPLICATE('Dog ', 3) AS Result;

Risultato:

+--------------+
| Result       |
|--------------|
| Dog Dog Dog  |
+--------------+

Anche se nota che questo aggiungerà uno spazio anche alla fine della stringa.

Potremmo usare il TRIM() funzione per superare questo:

SELECT TRIM(REPLICATE('Dog ', 3)) AS Result;

Risultato:

+-------------+
| Result      |
|-------------|
| Dog Dog Dog |
+-------------+

Forse il seguente esempio lo renderà più evidente:

SELECT 
  REPLICATE('Dog ', 3) + '.' AS 'Untrimmed',
  TRIM(REPLICATE('Dog ', 3)) + '.' AS 'Trimmed';

Risultato:

+---------------+--------------+
| Untrimmed     | Trimmed      |
|---------------+--------------|
| Dog Dog Dog . | Dog Dog Dog. |
+---------------+--------------+

Esempio 3 – Conteggio repliche non valido

Se il secondo argomento è un valore negativo, NULL viene restituito:

SELECT REPLICATE('Dog', -3) AS Result;

Risultato:

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Esempio 4:un esempio di database

Ecco un esempio di replica dei dati da un database:

SELECT TOP(3) 
TRIM(REPLICATE(ArtistName + ' ', 3)) AS Result
FROM Artists;

Risultato:

+----------------------------------------------------+
| Result                                             |
|----------------------------------------------------|
| Iron Maiden Iron Maiden Iron Maiden                |
| AC/DC AC/DC AC/DC                                  |
| Allan Holdsworth Allan Holdsworth Allan Holdsworth |
+----------------------------------------------------+