sql >> Databasteknik >  >> RDS >> Sqlserver

Hur funktionen QUOTENAME() fungerar i SQL Server (T-SQL)

I SQL Server, T-SQL QUOTENAME() funktionen returnerar en Unicode-sträng med avgränsare tillagda för att göra indatasträngen till en giltig SQL Server-avgränsad identifierare.

Den var designad för att citera databaser och deras objekt.

Funktionen accepterar två argument; inmatningssträngen (obligatoriskt) och ett avgränsningstecken (valfritt).

Syntax

Syntaxen ser ut så här:

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

Där teckensträng är inmatningssträngen och quote_character är ett valfritt argument för att ange ett tecken som ska användas som avgränsare. Om det utelämnas används parenteser som avgränsare.

Observera att teckensträng är sysname och är begränsad till 128 tecken. Inmatningar på mer än 128 tecken returnerar NULL .

Giltiga avgränsare (för det valfria quote_character argument) är:

  • ` (backtick)
  • ' (enkla citattecken)
  • " (dubbla citattecken)
  • [] (vänster eller höger hakparentes)
  • () (vänster eller höger parentes)
  • <> (mindre än eller större än tecken)
  • {} (vänster eller höger klammerparentes)

Exempel 1 – Grundläggande användning

Här är ett exempel på hur det fungerar:

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

Resultat:

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

Exempel 2 – Anpassad avgränsare

Här är ett exempel på hur du anger en annan avgränsare:

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

Resultat:

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

Och här är vad som händer om vi ändrar mellanparenteserna till lockiga hängslen:

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

Resultat:

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

Exempel 3 – Ogiltig inmatningssträng

Som nämnts är inmatningssträngen sysname , och därför är den begränsad till 128 tecken. sysname är en systemtillförd användardefinierad datatyp som funktionellt motsvarar nvarchar(128) , förutom att den inte är nullbar. sysname används för att referera till databasobjektnamn.

Så här händer om inmatningssträngen är för lång:

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;

Resultat:

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

Exempel 4 – Ogiltig avgränsare

Så här händer om du anger en ogiltig avgränsare:

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

Resultat:

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

  1. mysql SQL:specifik objekt ska vara först och sedan sortera resten av objekten

  2. SQL-frågakolumnen finns inte fel

  3. Välj flera kolumner från två tabeller med greendao

  4. Hur man får första och sista dagen i föregående månad (med tidsstämpel) i SQL Server