So wählen Sie einen Spaltennamen mit einem Leerzeichen in MySQL aus [Duplikat]

82

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

ehp
quelle
Ich habe nicht genug Ruf, um richtig zu kommentieren, also am Ende markiert: Die oben in den Kommentaren gepostete Lösung: `nervige_Tabelle`.`Business Name` hat in mySQL in einer where-Anweisung nicht funktioniert. Das Löschen
Tim0th1

Antworten:

149

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:

SELECT `Business Name` FROM annoying_table

Normalerweise werden solche Dinge von Leuten erstellt, die etwas wie Microsoft Access verwendet haben und immer eine GUI verwenden, um ihre Sache zu erledigen.

Tadman
quelle
@tadman Wenn ich Ihre Abfrage kopiere und einfüge, funktioniert es, aber wenn ich ein einfaches Anführungszeichen über die Tastatur eingebe, funktioniert es nicht. dh. SELECT 'Business Name' FROM
nervig_Tabelle
15
Das liegt daran, dass es sich nicht um einfache Anführungszeichen handelt, sondern um Häkchensymbole , die Sie normalerweise links von Ziffer 1 auf Ihrer Tastatur finden.
Peterm
5
Es gibt drei Arten von Anführungszeichen: einfach ', 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.
Tadman
Klammern [] haben bei mir nicht funktioniert. Keine Fehler, aber nur nicht angezeigt. `auf der anderen Seite hat super funktioniert.
Jay
1
@Robert Dann würden Sie es so schreiben: `ärgerliche_Tabelle`.`Business Name`.
Erik Čerpnjak
20

Wenn doppelte Anführungszeichen nicht funktionieren, versuchen Sie, die Zeichenfolge in eckige Klammern zu setzen.

Zum Beispiel:

SELECT "Business Name","Other Name" FROM your_Table

kann geändert werden als

SELECT [Business Name],[Other Name] FROM your_Table

Pater Mathew
quelle
16

Sie müssen Backtick anstelle von einfachen Anführungszeichen verwenden:

Einfaches Anführungszeichen - 'Business Name'- Falsch

Backtick - `Business Name`- Richtig

Saurabh
quelle
3

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.

Valmiki
quelle
1

Bei MS Access funktionieren eckige Klammern und Backticks verursachen alle Arten von seltsamen Fehlern, z. B. "Ungültiger Abfragename: Abfrage1".

Es sollte so aussehen

SELECT Customer.[Customer ID], Customer.[Full Name] ...
kztd
quelle
-4

Ich denke, doppelte Anführungszeichen funktionieren auch:

SELECT "Business Name","Other Name" FROM your_Table

Aber ich habe nur auf SQL Server getestet, NICHT auf mySQL, falls jemand mit MS SQL Server arbeitet.

Vin.X.
quelle
5
Dies würde immer die Zeichenfolge "Geschäftsname" auswählen, nicht den Inhalt der Spalte.
JonasB
@ JonasB Bitte überprüfen Sie noch einmal, ich habe doppelte Anführungszeichen verwendet, nicht einfache Anführungszeichen .... Einfache Anführungszeichen führen zu der Zeichenfolge, doppelte Anführungszeichen nicht.
Vin.X
Die Frage betraf speziell MySQL und auf einem MySQL-Server mit Standardeinstellungen sind doppelte und einfache Anführungszeichen gleichwertig. In dieser Antwort finden Sie weitere Informationen, warum es nur eine schlechte Idee ist, doppelte Anführungszeichen in MySQL zu verwenden: stackoverflow.com/a/14123649/4172652
JonasB