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 | +----------+