2010-05-25 22 views

Respuesta

11

Para MySQL, use ticks `.

Por ejemplo:

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

Para MS SQL utilice [y]

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

puede tener espacios en los nombres de columna con ms sql!?! –

+2

¡usted puede! Yo no lo haría, sin embargo. – JMP

+1

Sí, puede tener espacios o palabras reservadas como nombres de entidades en MSSQL. Solo necesitas [] ellos. – BoltBait

64

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.)

49

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.

+3

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

+0

Entonces, ¿cómo haces "t". *? – Loenix

+1

@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

1

Para DBASE uso/DBF [ y ]

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