¿Hay un estándar SQL para escapar de un nombre de columna? Si no, ¿qué funciona para mysql y sqlite? ¿Funciona también para sqlserver?SQL estándar para escapar de los nombres de columna?
Respuesta
Para MySQL, use ticks `.
Por ejemplo:
SELECT `column`, `column2` FROM `table`
Para MS SQL utilice [y]
SELECT [COLUMN], [COLUMN 2] FROM [TABLE]
El SQL-99 estándar specifies que comillas dobles (") se utiliza para delimitar identificadores
. Oracle, PostgreSQL, MySQL, MSSQL y SQlite admiten "como delimitador de identificador (aunque no todos usan" como "predeterminado"; por ejemplo, debe ejecutar MySQL en ANSI mode y SQL Server sólo admite cuando QUOTED_IDENTIFIER
es ON
.)
Según SQLite,
'foo'
es una cadena SQL"foo"
es un identificador SQL (columna/table/etc)[foo]
es un identificador en MS SQL`foo`
es un identificador en MySQL
Para nombres cualificados, la sintaxis es: "t"."foo"
o [t].[foo]
, etc.
MySQL soporta el "foo" estándar cuando se habilita la opción ANSI_QUOTES
.
Tenga en cuenta que SQLite permite que '' foo'' se interprete como un identificador si el contexto no permite una cadena, y '" foo "' se interpretará como una cadena si el contexto no permite un identificador, aunque hay es una nota que este comportamiento puede ser eliminado en futuras versiones. – thomasrutter
Entonces, ¿cómo haces "t". *? – Loenix
@thomasrutter Sí, este comportamiento me picó por completo ... Intenté usar 'WHERE 'nonexistent_column' '= 0' y sqlite lo ejecuté felizmente pretendiendo que mi' 'nonexistent_column' 'era una cadena. Al calificar completamente el nombre como '" my_table "." Nonexistent_column "' obliga a sqlite a comportarse de manera más estricta. – Rufflewind
Para DBASE uso/DBF [
y ]
SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE]
- 1. SQL dinámico para generar nombres de columna?
- 2. SQL Listado de todos los nombres de columna alfabéticamente
- 3. ¿Qué caracteres debo escapar/desinfectar para los nombres de archivo?
- 4. Obtener nombres de columna
- 5. Nombres estándar para los campos de entrada HTML
- 6. Obteniendo bcp.exe para escapar de los terminadores
- 7. biblioteca C estándar para escapar de una cadena
- 8. LINQ a SQL tiene la columna de palabras clave como nombre de columna, como citar/escapar
- 9. ¿Puedo escapar caracteres en nombres de variables?
- 10. ¿Cuáles son los tamaños de columna de base de datos recomendados para los nombres?
- 11. SQL: Vista dinámica con los nombres de columna en base a los valores de columna en la tabla de origen
- 12. Alias para nombres de columna en Rails
- 13. Cómo consultar los nombres de columna dinámicamente utilizando Postgres/Npgsql
- 14. mysql, iterar a través de los nombres de columna
- 15. Cómo citar nombres de columna con Zend_Db?
- 16. Regex para escapar de los paréntesis
- 17. servidor sql: necesita escapar [?
- 18. ¿Cómo modifico esta consulta t-sql para devolver el valor máximo para diferentes nombres de columna?
- 19. MySQL recupera los nombres de columna donde datatype == X
- 20. combinación interna de SQL dos tablas con los mismos nombres de columna
- 21. Los nombres de columna para una mesa formada por una UNION
- 22. Escapar de forma segura los nombres de tablas dinámicas en MySQL usando Codeigniter
- 23. Obteniendo los nombres de columna de un AbstractTableModel
- 24. devuelve los nombres de columna de la instrucción pyodbc execute()
- 25. ¿Devuelve los nombres de columna de Oracle en formato table.column?
- 26. Obtener los nombres de columna de un ndarray pitón numpy
- 27. LINQ: nombres de columna personalizados
- 28. Escapar SQL cadenas en Java
- 29. jqgrid obtener todos los nombres de columna de grillas
- 30. Escapar caracteres especiales en SQL
puede tener espacios en los nombres de columna con ms sql!?! –
¡usted puede! Yo no lo haría, sin embargo. – JMP
Sí, puede tener espacios o palabras reservadas como nombres de entidades en MSSQL. Solo necesitas [] ellos. – BoltBait