Pregunta SQL estándar para escapar de los nombres de columna?


¿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?


73
2018-05-25 01:35


origen


Respuestas:


El estándar SQL-99 especifica esa comilla doble (") se usa 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 Modo ANSI y SQL Server solo lo admite cuando QUOTED_IDENTIFIER es ON.)


68
2018-05-25 01:49



De acuerdo a SQLite,

  • 'foo' es una cadena SQL
  • "foo" es un identificador de SQL (columna / tabla / etc.)
  • [foo] es un identificador en MS SQL
  • `foo` es un identificador en MySQL

Para nombres calificados, la sintaxis es: "t"."foo" o [t].[foo], etc.

MySQL admite el estándar "foo" cuando el ANSI_QUOTES la opción está habilitada.


54
2018-05-25 01:51



Para el uso de MS SQL [y]

SELECT [COLUMN], [COLUMN 2] FROM [TABLE]

15
2018-05-25 01:40



Para MySQL, use ticks `.

Por ejemplo:

SELECT `column`, `column2` FROM `table`

11
2018-05-25 01:38



Para uso DBASE / DBF [ y ]

SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE]

1
2018-02-11 16:18