Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como a função QUOTENAME() funciona no SQL Server (T-SQL)


No SQL Server, o T-SQL QUOTENAME() A função retorna uma string Unicode com os delimitadores adicionados para tornar a string de entrada um identificador delimitado válido do SQL Server.

Ele foi projetado para citar bancos de dados e seus objetos.

A função aceita dois argumentos; a string de entrada (obrigatória) e um caractere delimitador (opcional).


Sintaxe


A sintaxe fica assim:
QUOTENAME ( 'character_string' [ , 'quote_character' ] )

Onde character_string é a string de entrada e quote_character é um argumento opcional para especificar um caractere a ser usado como delimitador. Se omitidos, colchetes são usados ​​como delimitador.

Observe que character_string é nomedosistema e está limitado a 128 caracteres. Entradas com mais de 128 caracteres retornam NULL .

Delimitadores válidos (para o opcional quote_character argumento) são:
  • ` (acento grave)
  • ' (aspas simples)
  • " (aspas duplas)
  • [] (colchete esquerdo ou direito)
  • () (parêntese esquerdo ou direito)
  • <> (menor ou maior que o sinal)
  • {} (chave esquerda ou direita)

Exemplo 1 – Uso básico


Veja um exemplo de como funciona:
SELECT QUOTENAME('cat[]dog') AS Result;

Resultado:
+-------------+
| Result      |
|-------------|
| [cat[]]dog] |
+-------------+

Exemplo 2 – Delimitador personalizado


Aqui está um exemplo de especificação de um delimitador diferente:
SELECT QUOTENAME('cat[]dog', '}') AS Result;

Resultado:
+------------+
| Result     |
|------------|
| {cat[]dog} |
+------------+

E aqui está o que acontece se mudarmos os colchetes do meio para chaves:
SELECT QUOTENAME('cat{}dog', '}') AS Result;

Resultado:
+-------------+
| Result      |
|-------------|
| {cat{}}dog} |
+-------------+

Exemplo 3 - String de entrada inválida


Como mencionado, a string de entrada é sysname , e, portanto, é limitado a 128 caracteres. nome do sistema é um tipo de dados definido pelo usuário fornecido pelo sistema que é funcionalmente equivalente a nvarchar(128) , exceto que não é anulável. nome do sistema é usado para fazer referência a nomes de objetos de banco de dados.

Veja o que acontece se a string de entrada for muito longa:
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;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+

Exemplo 4 – Delimitador inválido


Veja o que acontece se você especificar um delimitador inválido:
SELECT QUOTENAME('cat[]dog', '!') AS Result;

Resultado:
+----------+
| Result   |
|----------|
| NULL     |
+----------+