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