Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo interceptar los campos antes del identificador, en medio del identificador y después del identificador en SQL

Cómo interceptar los campos antes del identificador, en medio del identificador y después del identificador en SQL

Varios conceptos:

A. Identificador: Es el nombre del objeto de la base de datos.

El nombre de un objeto de base de datos se trata como el identificador del objeto. Todo en Microsoft® SQL Server® puede tener un identificador. Los servidores, bases de datos y objetos de bases de datos (como tablas, vistas, columnas, índices, activadores, procedimientos, restricciones, reglas, etc.) tienen identificadores. La mayoría de los objetos requieren identificadores, pero para algunos objetos (como las restricciones), los identificadores son opcionales.

B. Palabras clave reservadas: Es la sintaxis del lenguaje sql. Pertenece a la categoría de código.

Las palabras clave reservadas se utilizan para definir, operar y acceder a la base de datos. Las palabras clave reservadas forman parte de la sintaxis del lenguaje Transact-SQL utilizada por SQL Server para analizar y comprender instrucciones y lotes de Transact-SQL. Aunque sintácticamente es posible utilizar palabras clave reservadas de SQL Server como identificadores y nombres de objetos en secuencias de comandos Transact-SQL, sólo se permiten identificadores delimitados.

C. Cadena: un tipo de tipo de datos, incluido el tipo entero, el tipo de cadena, etc. Pertenece a la categoría de datos.

Cada columna, variable local, expresión y parámetro tiene un tipo de datos asociado. Es decir, pertenece a un determinado tipo de datos.

D. Caracteres comodín y caracteres de escape: estos dos son conceptos relacionados con cadenas. Suele aparecer en cadenas.

Por ejemplo, como 'dsd', dsd es una cadena. es un comodín. Todo el mundo debería saber el significado de esta afirmación, ^_^.

Utilice caracteres de escape para convertir caracteres comodín en caracteres normales. 2 métodos:

1. [] es el carácter de escape predeterminado y los caracteres comodín internos (solo pueden ser caracteres comodín) se tratan como caracteres normales:

como 'dsd[ ]', en este momento, es un carácter normal. La condición de búsqueda es que un determinado valor de campo debe ser exactamente igual a dsd.

2. Utilice la palabra clave ESCAPE para definir el carácter de escape.

Me gusta 'dsd/' ESCAPE '/' tiene el mismo efecto que 'dsd[]'

.

También existe una situación de caracteres de escape:

Como todos sabemos, las comillas simples generalmente se pueden usar para incluir cadenas. Si hay comillas simples en la cadena, que son caracteres comunes, entonces existen. Son dos significados de comillas simples al mismo tiempo. ¿Cuál es la diferencia? Debe usar 2 comillas simples para escapar a caracteres comunes, como 'ds''d', que en realidad se refiere a la cadena: ds'd

La función QUOTENAME que se menciona más adelante usa [ por defecto ] como delimitador cadena [] diferencia de fase.

Volviendo al grano,

Los identificadores se dividen en:

1. Identificadores convencionales: identificadores que cumplen con las reglas de los identificadores convencionales.

Las reglas generales del identificador son las siguientes: (consulte la ayuda en línea de sqlserver)

1. . . . .

2. . . . .

3. . . . .

4. . . . .

2. Identificadores delimitados: Los identificadores encerrados entre comillas dobles " o corchetes [ ] son ​​identificadores delimitados.

Nota: Las comillas dobles " o corchetes [ ] son ​​separadores.

En las declaraciones Transact-SQL, los identificadores que no cumplen con las reglas para identificadores regulares deben delimitarse entre comillas dobles o corchetes. Los identificadores que cumplen con las reglas de formato de identificador pueden o no estar separados.

1. Cuando QUOTED_IDENTIFIER está activado, el valor predeterminado está activado.

SQL Server sigue las reglas SQL-92:

Las comillas dobles solo se pueden usar para delimitar identificadores, no cadenas.

Para mantener la compatibilidad con las aplicaciones existentes, SQL Server no aplica completamente esta regla. Una cadena se puede encerrar entre comillas dobles si no excede la longitud del identificador. Pero esto no se recomienda.

Se deben utilizar comillas simples para encerrar cadenas y no se pueden utilizar para separar identificadores.

Si la cadena contiene comillas simples, debe agregar otra comilla simple antes de la comilla simple:

SELECT * FROM "My Table"

WHERE "Último Nombre" = 'O''Brien'

Nota: "Apellido", puede escribirlo como 'Apellido' sin informar un error de sintaxis, porque SQL cree que está comparando cadenas. Por ejemplo, si está escrito como 'Apellido' = 'Apellido', el resultado de la comparación es verdadero y se seleccionarán todos los registros de la tabla. Y si se escribe como: DONDE "Apellido" = "O''Brien", es decir, el lado derecho del signo igual se cambia a comillas dobles, O''Brien se considerará como un identificador (objeto de base de datos ), es decir, como nombre de campo, durante el tiempo de ejecución, le indicará que no hay ninguna columna O''Brien. 2. Cuando QUOTED_IDENTIFIER está en OFF, SQL Server sigue las siguientes reglas para el uso de comillas dobles y comillas simples:

Las comillas no se pueden usar para separar identificadores, pero los corchetes se usan como delimitadores.

Se pueden utilizar comillas simples o dobles para contener cadenas.

Si se utilizan comillas dobles, las comillas simples incrustadas no necesitan estar representadas por dos comillas simples:

SELECT * FROM [Mi tabla]

WHERE [ Apellido] = "O'Brien"

Los identificadores regulares y los identificadores delimitados deben contener entre 1 y 128 caracteres

Además:

Los Identificadores utilizados como parámetros: (Consulte la ayuda en línea para obtener más detalles)

Muchos procedimientos almacenados del sistema, funciones y declaraciones DBCC toman nombres de objetos como parámetros. Algunos de los parámetros aceptan nombres de objetos de varias partes, otros aceptan sólo nombres de una sola parte. El hecho de que se acepten nombres de objetos de una sola parte o de varias partes determina cómo SQL Server analiza y utiliza el parámetro internamente. . . . . . . .

Además:

Función QUOTENAME:

explicación de msdn: Devuelve una cadena Unicode con delimitadores La adición de delimitadores puede hacer que la cadena de entrada se convierta en un Microsoft válido. ® Identificador delimitado de SQL Server®.

El siguiente ejemplo acepta la cadena abc[]def y utiliza los caracteres [ y ] para crear un identificador delimitado de SQL Server válido:

SELECT QUOTENAME('abc[]def')

El siguiente es el conjunto de resultados:

[abc[]]def]

(1 fila(s) afectada(s)

Tenga en cuenta que los caracteres Hay dos corchetes derechos en la cadena "abc [] def", que se utilizan para representar caracteres de escape y se convierten en caracteres ordinarios para distinguirlos del delimitador [].

Explicación: El [] en la cadena abc[]def se trata como un carácter ordinario, por lo que ] ] se usa para indicar que ] es un carácter ordinario, lo que significa que el [] en el medio es un personaje ordinario.

Si es: SELECT QUOTENAME('abc[]def', '()'), sin [] como separador, entonces el resultado es:

(abc[] def), no es necesario que escapen dos ]], porque solo hay un significado de [] en la nueva cadena, es decir, caracteres comunes.

Esta es una regla general, por ejemplo, si la cadena contiene comillas simples ' y es una cadena normal, como por ejemplo: ds'd,

se debe cambiar la declaración similar. a: como 'ds ''d', en lugar de: como 'ds'd' . Es decir, 2 comillas simples representan el carácter de escape y se convierten en caracteres de comillas simples normales.