Ich arbeite an einem Projekt, bei dem ein anderer Entwickler eine Tabelle mit Spaltennamen wie erstellt hat 'Business Name'
. Das ist ein Leerzeichen zwischen zwei Wörtern. Wenn ich eine SELECT
Anweisung mit 'Geschäftsname' ausführe , heißt es, dass es keine Spalte mit dem Namen 'Geschäft' gibt.
Wie kann ich dieses Problem lösen?
Antworten:
Im Allgemeinen besteht der erste Schritt darin, dies nicht an erster Stelle zu tun. Wenn dies jedoch bereits erfolgt ist, müssen Sie Ihre Spaltennamen richtig zitieren:
Normalerweise werden solche Dinge von Leuten erstellt, die etwas wie Microsoft Access verwendet haben und immer eine GUI verwenden, um ihre Sache zu erledigen.
quelle
'
, doppelt"
und rückwärts`
. In MySQL sind die ersten beiden gleichwertig und können austauschbar verwendet werden. Dies ist auf anderen Plattformen nicht immer der Fall, und insbesondere Postgres behandelt sie anders. Die Backticks werden nur zum Escapezeichen von Datenbank- oder Spaltennamen verwendet.Wenn doppelte Anführungszeichen nicht funktionieren, versuchen Sie, die Zeichenfolge in eckige Klammern zu setzen.
Zum Beispiel:
kann geändert werden als
SELECT [Business Name],[Other Name] FROM your_Table
quelle
Sie müssen Backtick anstelle von einfachen Anführungszeichen verwenden:
Einfaches Anführungszeichen -
'Business Name'
- FalschBacktick -
`Business Name`
- Richtigquelle
Für jeden sein eigenes, aber der richtige Weg, dies zu codieren, besteht darin, die Spalten umzubenennen, die einen Unterstrich einfügen, damit keine Lücken entstehen. Dadurch wird sichergestellt, dass beim Codieren keine Fehler auftreten. Wenn Sie die Spaltennamen für die öffentliche Anzeige drucken, können Sie suchen und ersetzen, um den Unterstrich durch ein Leerzeichen zu ersetzen.
quelle
Bei MS Access funktionieren eckige Klammern und Backticks verursachen alle Arten von seltsamen Fehlern, z. B. "Ungültiger Abfragename: Abfrage1".
Es sollte so aussehen
quelle
Ich denke, doppelte Anführungszeichen funktionieren auch:
Aber ich habe nur auf SQL Server getestet, NICHT auf mySQL, falls jemand mit MS SQL Server arbeitet.
quelle