In SQL Server is de T-SQL QUOTENAME()
functie retourneert een Unicode-tekenreeks met de scheidingstekens toegevoegd om de invoertekenreeks een geldige SQL Server-gescheiden id te maken.
Het is ontworpen voor het citeren van databases en hun objecten.
De functie accepteert twee argumenten; de invoertekenreeks (vereist) en een scheidingsteken (optioneel).
Syntaxis
De syntaxis gaat als volgt:
QUOTENAME ( 'character_string' [ , 'quote_character' ] )
Waar character_string is de invoertekenreeks, en quote_character is een optioneel argument om een teken op te geven dat als scheidingsteken moet worden gebruikt. Indien weggelaten, worden haakjes gebruikt als scheidingsteken.
Merk op dat character_string is sysname en is beperkt tot 128 tekens. Invoer groter dan 128 tekens retourneert NULL
.
Geldige scheidingstekens (voor het optionele quote_character argument) zijn:
`
(backtick)'
(enkel aanhalingsteken)"
(dubbel aanhalingsteken)[]
(linker of rechter haakje)()
(linker of rechter haakje)<>
(kleiner dan of groter dan teken){}
(links of rechts accolade)
Voorbeeld 1 – Basisgebruik
Hier is een voorbeeld van hoe het werkt:
SELECT QUOTENAME('cat[]dog') AS Result;
Resultaat:
+-------------+ | Result | |-------------| | [cat[]]dog] | +-------------+
Voorbeeld 2 – Aangepast scheidingsteken
Hier is een voorbeeld van het specificeren van een ander scheidingsteken:
SELECT QUOTENAME('cat[]dog', '}') AS Result;
Resultaat:
+------------+ | Result | |------------| | {cat[]dog} | +------------+
En dit is wat er gebeurt als we de middelste haakjes veranderen in accolades:
SELECT QUOTENAME('cat{}dog', '}') AS Result;
Resultaat:
+-------------+ | Result | |-------------| | {cat{}}dog} | +-------------+
Voorbeeld 3 – Ongeldige invoerreeks
Zoals vermeld, is de invoerstring sysname , en daarom is het beperkt tot 128 tekens. systeemnaam is een door het systeem geleverd, door de gebruiker gedefinieerd gegevenstype dat functioneel equivalent is aan nvarchar(128) , behalve dat het niet nullable is. systeemnaam wordt gebruikt om naar namen van databaseobjecten te verwijzen.
Dit is wat er gebeurt als de invoerreeks te lang is:
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;
Resultaat:
+----------+ | Result | |----------| | NULL | +----------+
Voorbeeld 4 – Ongeldig scheidingsteken
Dit gebeurt er als u een ongeldig scheidingsteken opgeeft:
SELECT QUOTENAME('cat[]dog', '!') AS Result;
Resultaat:
+----------+ | Result | |----------| | NULL | +----------+