Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Funktionsweise der QUOTENAME()-Funktion in SQL Server (T-SQL)

In SQL Server das T-SQL QUOTENAME() Die Funktion gibt eine Unicode-Zeichenfolge mit hinzugefügten Trennzeichen zurück, um die Eingabezeichenfolge zu einem gültigen SQL Server-begrenzten Bezeichner zu machen.

Es wurde entwickelt, um Datenbanken und ihre Objekte zu zitieren.

Die Funktion akzeptiert zwei Argumente; die Eingabezeichenfolge (erforderlich) und ein Trennzeichen (optional).

Syntax

Die Syntax lautet wie folgt:

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

Wobei Zeichenfolge ist die Eingabezeichenfolge und quote_character ist ein optionales Argument, um ein Zeichen anzugeben, das als Trennzeichen verwendet werden soll. Wenn weggelassen, werden Klammern als Trennzeichen verwendet.

Beachten Sie, dass Zeichenfolge ist sysname und ist auf 128 Zeichen begrenzt. Eingaben mit mehr als 128 Zeichen geben NULL zurück .

Gültige Trennzeichen (für das optionale quote_character Argument) sind:

  • ` (Backtick)
  • ' (einfaches Anführungszeichen)
  • " (doppeltes Anführungszeichen)
  • [] (linke oder rechte Klammer)
  • () (linke oder rechte Klammer)
  • <> (Kleiner-als- oder Größer-als-Zeichen)
  • {} (linke oder rechte Klammer)

Beispiel 1 – Grundlegende Verwendung

Hier ist ein Beispiel dafür, wie es funktioniert:

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

Ergebnis:

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

Beispiel 2 – Benutzerdefiniertes Trennzeichen

Hier ist ein Beispiel für die Angabe eines anderen Trennzeichens:

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

Ergebnis:

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

Und das passiert, wenn wir die mittleren Klammern in geschweifte Klammern ändern:

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

Ergebnis:

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

Beispiel 3 – Ungültiger Eingabestring

Wie bereits erwähnt, ist die Eingabezeichenfolge sysname , und ist daher auf 128 Zeichen begrenzt. Systemname ist ein vom System bereitgestellter benutzerdefinierter Datentyp, der funktionell äquivalent zu nvarchar(128) ist , außer dass es nicht nullable ist. Systemname wird verwendet, um Datenbankobjektnamen zu referenzieren.

Folgendes passiert, wenn die Eingabezeichenfolge zu lang ist:

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;

Ergebnis:

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

Beispiel 4 – Ungültiges Trennzeichen

Folgendes passiert, wenn Sie ein ungültiges Trennzeichen angeben:

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

Ergebnis:

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