Dans SQL Server, le QUOTENAME()
de T-SQL renvoie une chaîne Unicode avec les délimiteurs ajoutés pour faire de la chaîne d'entrée un identifiant délimité SQL Server valide.
Il a été conçu pour citer des bases de données et leurs objets.
La fonction accepte deux arguments ; la chaîne d'entrée (obligatoire) et un caractère délimiteur (facultatif).
Syntaxe
La syntaxe ressemble à ceci :
QUOTENAME ( 'character_string' [ , 'quote_character' ] )
Où character_string est la chaîne d'entrée et quote_character est un argument facultatif pour spécifier un caractère à utiliser comme délimiteur. S'ils sont omis, les crochets sont utilisés comme délimiteur.
Notez que character_string est sysname et est limité à 128 caractères. Les entrées supérieures à 128 caractères renvoient NULL
.
Délimiteurs valides (pour le caractère facultatif quote_character argument) sont :
`
(backtick)'
(guillemet simple)"
(guillemet double)[]
(crochet gauche ou droit)()
(parenthèse gauche ou droite)<>
(signe inférieur ou supérieur à){}
(accolade gauche ou droite)
Exemple 1 - Utilisation de base
Voici un exemple de son fonctionnement :
SELECT QUOTENAME('cat[]dog') AS Result;
Résultat :
+-------------+ | Result | |-------------| | [cat[]]dog] | +-------------+
Exemple 2 – Délimiteur personnalisé
Voici un exemple de spécification d'un délimiteur différent :
SELECT QUOTENAME('cat[]dog', '}') AS Result;
Résultat :
+------------+ | Result | |------------| | {cat[]dog} | +------------+
Et voici ce qui se passe si nous changeons les crochets du milieu en accolades :
SELECT QUOTENAME('cat{}dog', '}') AS Result;
Résultat :
+-------------+ | Result | |-------------| | {cat{}}dog} | +-------------+
Exemple 3 - Chaîne d'entrée non valide
Comme mentionné, la chaîne d'entrée est sysname , et par conséquent il est limité à 128 caractères. nom_système est un type de données défini par l'utilisateur fourni par le système qui est fonctionnellement équivalent à nvarchar(128) , sauf qu'il n'est pas nullable. nom_système est utilisé pour référencer les noms d'objets de la base de données.
Voici ce qui se passe si la chaîne d'entrée est trop longue :
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;
Résultat :
+----------+ | Result | |----------| | NULL | +----------+
Exemple 4 – Délimiteur non valide
Voici ce qui se passe si vous spécifiez un délimiteur non valide :
SELECT QUOTENAME('cat[]dog', '!') AS Result;
Résultat :
+----------+ | Result | |----------| | NULL | +----------+