Gibt es einen SQL-Standard, um einen Spaltennamen zu umgehen? Wenn nicht, was für mysql und sqlite funktioniert? funktioniert es auch für sqlserver?SQL-Standard, um Spaltennamen zu vermeiden?
Antwort
Für MySQL verwenden Sie Häkchen `.
Zum Beispiel:
SELECT `column`, `column2` FROM `table`
für MS SQL verwenden [und]
SELECT [COLUMN], [COLUMN 2] FROM [TABLE]
Die SQL-99-Standard specifies dass doppelte Anführungszeichen (") verwendet werden Kennungen abgrenzen
. Oracle, PostgreSQL, MySQL, MSSQL und SQlite unterstützen alle "als Trennzeichen für den Bezeichner (obwohl sie nicht alle" als "Standard" verwenden - zum Beispiel müssen Sie MySQL in 012 ausführenund SQL-Server unterstützt wird, nur wenn QUOTED_IDENTIFIER
ON
ist.)
Nach SQLite,
'foo'
ist eine SQL-Zeichenfolge"foo"
wird eine SQL-Kennung (Spalte/table/etc)[foo]
ist ein Bezeichner in MS SQL`foo`
ist ein Bezeichner in MySQL
Für qualifizierte Namen, die Syntax ist: "t"."foo"
oder [t].[foo]
usw.
MySQL unterstützt den Standard "foo", wenn die ANSI_QUOTES
Option aktiviert ist.
Beachten Sie, dass SQLite '' foo' 'als Bezeichner interpretiert werden kann, wenn der Kontext keine Zeichenfolge zulässt, und '" foo "' als Zeichenfolge interpretiert wird, wenn der Kontext dort keine Kennung zulässt ist eine Anmerkung, dass dieses Verhalten in zukünftigen Versionen möglicherweise entfernt wird. – thomasrutter
Also, wie machst du "t". *? – Loenix
@thomasrutter Ja, ich wurde total von diesem Verhalten gebissen ... Versuchte 'WHERE" nonexistent_column "= 0' zu benutzen und sqlite führte es einfach so aus, als ob meine' 'nonexistent_column'' eine Zeichenkette wäre. Wenn Sie den Namen vollständig als "my_table" qualifizieren, führt "nonexistent_column" 'dazu, dass sich sqlite strenger verhält. – Rufflewind
Für DBASE/DBF Verwendung [
und ]
SELECT [DATE], [TIME], [ANY_OTHER_TO_BE_ESCAPED_COLUMN] FROM [TABLE]
- 1. CRTP, um dynamischen Polymorphismus zu vermeiden
- 2. Gibt es Strategien, um Satisficing zu vermeiden?
- 3. Code nacharbeiten, um NetworkonMainThreadException zu vermeiden
- 4. Eine neue Methode, um Roboter zu vermeiden
- 5. regulärer Ausdruck, um vollständige Übereinstimmung zu vermeiden
- 6. Synchronisieren eines Timers, um Überlappungen zu vermeiden
- 7. Platzhalterzeichen, um einen positiven Vergleich zu vermeiden?
- 8. Um Web.config Dateiänderungen immer wieder zu vermeiden
- 9. Refactoring, um doppelten Code zu vermeiden
- 10. Mehrere Abfragen, um Joins zu vermeiden?
- 11. Console.WriteLine (ex.Message) aufrufen, um Warnmeldung zu vermeiden
- 12. Welcher Kontext? Um Memory Leaks zu vermeiden
- 13. Notwendigkeit, Modul vorzumportieren, um Fehler zu vermeiden
- 14. Null-Objektmuster, um Null-Prüfungen zu vermeiden?
- 15. Ist es genug, um XSS zu vermeiden?
- 16. MySQL-Referenzierung, um zu vermeiden, mich zu wiederholen?
- 17. Wie Makro schreiben, um zu vermeiden, neu zu definieren?
- 18. Beste pythonische Praxis, um zu vermeiden, Code zu wiederholen?
- 19. Teile von Listen zu teilen, um das Kopieren zu vermeiden
- 20. Verwenden von GetSchemaTable(), um nur Spaltennamen abzurufen
- 21. DataReader zu .CSV mit Spaltennamen
- 22. Hinzufügen eines Präfix zu Spaltennamen
- 23. Wie Avait.result zu vermeiden?
- 24. Versuchen, AppDomains zu vermeiden
- 25. Filtern von zwei Arrays, um Inf/NaN-Werte zu vermeiden
- 26. Wie codiert man URL, um Sonderzeichen in Java zu vermeiden?
- 27. Wie ändere ich diesen Entwurf, um einen Downcast zu vermeiden?
- 28. Der beste Weg, um tausend If-Anweisungen zu vermeiden?
- 29. Ist das ein guter Ansatz, um SQLAlchemy/SQLObject zu vermeiden?
- 30. Benutzerdefinierte Jackson Deserializer, um die Zuordnung bestimmter Objekte zu vermeiden
Sie Leerzeichen in Spaltennamen mit MS SQL haben kann!?! –
können Sie! Ich würde es aber nicht tun. – JMP
Ja, Sie können Leerzeichen oder reservierte Wörter als Entitätsnamen in MSSQL haben. Sie müssen nur [] sie. – BoltBait