sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo funciona la función QUOTENAME() en SQL Server (T-SQL)

En SQL Server, T-SQL QUOTENAME() La función devuelve una cadena Unicode con los delimitadores agregados para convertir la cadena de entrada en un identificador delimitado de SQL Server válido.

Fue diseñado para cotizar bases de datos y sus objetos.

La función acepta dos argumentos; la cadena de entrada (obligatoria) y un carácter delimitador (opcional).

Sintaxis

La sintaxis es así:

QUOTENAME ( 'character_string' [ , 'quote_character' ] )

Donde cadena_de_caracteres es la cadena de entrada y quote_character es un argumento opcional para especificar un carácter para usar como delimitador. Si se omite, se utilizan corchetes como delimitador.

Tenga en cuenta que character_string es nombre del sistema y está limitado a 128 caracteres. Las entradas de más de 128 caracteres devuelven NULL .

Delimitadores válidos (para el quote_character opcional argumento) son:

  • ` (comunicación grave)
  • ' (comillas simples)
  • " (comillas dobles)
  • [] (corchete izquierdo o derecho)
  • () (paréntesis izquierdo o derecho)
  • <> (signo menor o mayor que)
  • {} (llave izquierda o derecha)

Ejemplo 1:uso básico

He aquí un ejemplo de cómo funciona:

SELECT QUOTENAME('cat[]dog') AS Result;

Resultado:

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

Ejemplo 2:delimitador personalizado

Aquí hay un ejemplo de cómo especificar un delimitador diferente:

SELECT QUOTENAME('cat[]dog', '}') AS Result;

Resultado:

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

Y esto es lo que sucede si cambiamos los corchetes centrales por llaves:

SELECT QUOTENAME('cat{}dog', '}') AS Result;

Resultado:

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

Ejemplo 3:cadena de entrada no válida

Como se mencionó, la cadena de entrada es sysname y, por lo tanto, está limitado a 128 caracteres. nombre del sistema es un tipo de datos definido por el usuario proporcionado por el sistema que es funcionalmente equivalente a nvarchar(128) , excepto que no es anulable. nombre del sistema se utiliza para hacer referencia a los nombres de los objetos de la base de datos.

Esto es lo que sucede si la cadena de entrada es demasiado larga:

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

Ejemplo 4:delimitador no válido

Esto es lo que sucede si especifica un delimitador no válido:

SELECT QUOTENAME('cat[]dog', '!') AS Result;

Resultado:

+----------+
| Result   |
|----------|
| NULL     |
+----------+