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

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

In SQL Server, T-SQL QUOTENAME() La funzione restituisce una stringa Unicode con i delimitatori aggiunti per rendere la stringa di input un identificatore delimitato di SQL Server valido.

È stato progettato per citare i database ei loro oggetti.

La funzione accetta due argomenti; la stringa di input (obbligatoria) e un carattere delimitatore (facoltativo).

Sintassi

La sintassi è questa:

QUOTENAME ( 'character_string' [ , 'quote_character' ] )

Dove stringa_carattere è la stringa di input e quote_character è un argomento facoltativo per specificare un carattere da utilizzare come delimitatore. Se omesso, le parentesi vengono utilizzate come delimitatore.

Nota che stringa_carattere è nome di sistema ed è limitato a 128 caratteri. Gli input superiori a 128 caratteri restituiscono NULL .

Delimitatori validi (per il quote_character facoltativo argomento) sono:

  • ` (ritorno indietro)
  • ' (virgolette singole)
  • " (virgolette doppie)
  • [] (parentesi sinistra o destra)
  • () (parantesi sinistra o destra)
  • <> (minore o maggiore di segno)
  • {} (parentesi sinistra o destra)

Esempio 1 – Utilizzo di base

Ecco un esempio di come funziona:

SELECT QUOTENAME('cat[]dog') AS Result;

Risultato:

+-------------+
| Result      |
|-------------|
| [cat[]]dog] |
+-------------+

Esempio 2 – Delimitatore personalizzato

Ecco un esempio per specificare un delimitatore diverso:

SELECT QUOTENAME('cat[]dog', '}') AS Result;

Risultato:

+------------+
| Result     |
|------------|
| {cat[]dog} |
+------------+

Ed ecco cosa succede se cambiamo le parentesi centrali in parentesi graffe:

SELECT QUOTENAME('cat{}dog', '}') AS Result;

Risultato:

+-------------+
| Result      |
|-------------|
| {cat{}}dog} |
+-------------+

Esempio 3 – Stringa di input non valida

Come accennato, la stringa di input è sysname , e quindi è limitato a 128 caratteri. nome di sistema è un tipo di dati definito dall'utente fornito dal sistema che è funzionalmente equivalente a nvarchar(128) , tranne per il fatto che non è annullabile. nome di sistema viene utilizzato per fare riferimento ai nomi degli oggetti del database.

Ecco cosa succede se la stringa di input è troppo lunga:

SELECT QUOTENAME('This text is too long to be an input string for this function, because it contains more than 128 characters - too long for sysname.') AS Result;

Risultato:

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

Esempio 4 – Delimitatore non valido

Ecco cosa succede se specifichi un delimitatore non valido:

SELECT QUOTENAME('cat[]dog', '!') AS Result;

Risultato:

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