Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonctionnement de la fonction QUOTENAME() dans SQL Server (T-SQL)

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' ] )

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