Eine meiner Spalten heißt from
. Ich kann den Namen nicht ändern, weil ich es nicht geschafft habe. Darf ich so etwas tun SELECT from FROM TableName
oder gibt es eine spezielle Syntax, um zu vermeiden, dass der SQL Server verwirrt wird?
sql
sql-server
Nathan H.
quelle
quelle
SELECT "from" FROM TableName
, schön und tragbar!Antworten:
Schließen Sie den Spaltennamen wie folgt in Klammern ein und
from
wird zu [von].Es ist auch möglich, Folgendes zu verwenden (nützlich beim Abfragen mehrerer Tabellen):
quelle
select TableName.from from TableName;
PS: Es funktioniert in MySQLWenn es in PostgreSQL war, verwenden Sie doppelte Anführungszeichen um den Namen, wie:
Hinweis: Intern konvertiert PostgreSQL automatisch alle nicht zitierten Befehle und Parameter in Kleinbuchstaben. Dies hat zur Folge, dass Befehle und Bezeichner nicht zwischen Groß- und Kleinschreibung unterscheiden. sEleCt * von tAblE; wird als select * from table interpretiert ; . Parameter in doppelten Anführungszeichen werden jedoch unverändert verwendet und unterscheiden daher zwischen Groß- und Kleinschreibung: Wählen Sie * aus "Tabelle" aus. und wählen Sie * aus "Tabelle"; Ruft das Ergebnis aus zwei verschiedenen Tabellen ab.
quelle
Während Sie es tun - alias es als etwas anderes (oder noch besser, verwenden Sie eine Ansicht oder einen SP und verwerfen Sie die alte Direktzugriffsmethode).
quelle
Dies sind die beiden Möglichkeiten:
quelle
Ihre Frage scheint hier gut beantwortet zu sein, aber ich möchte diesem Thema nur noch einen Kommentar hinzufügen.
Diejenigen, die die Datenbank entwerfen, sollten die reservierten Schlüsselwörter gut kennen und deren Verwendung vermeiden. Wenn Sie jemanden entdecken, der es benutzt, informieren Sie ihn darüber (auf höfliche Weise). Das Schlüsselwort hier ist reserviertes Wort.
Mehr Informationen:
und
quelle
Wenn Sie SQL Server verwenden, können Sie einfach die eckigen Klammern um den Spalten- oder Tabellennamen setzen.
quelle
Verwenden Sie in Apache Drill Backquotes:
quelle
Ich habe mich auch diesem Problem gestellt. Die Lösung hierfür besteht darin, [Column_Name] wie folgt in die Abfrage einzufügen.
Es wird also perfekt funktionieren.
quelle
Hallo, ich arbeite an Teradata-Systemen, die vollständig ANSI-kompatibel sind. Verwenden Sie doppelte Anführungszeichen, um solche Spalten zu benennen.
ZB
type
ist ein reserviertes SQL-Schlüsselwort und wird bei Verwendung in Anführungszeichentype
als benutzerdefinierter Name behandelt.Siehe untenstehendes Codebeispiel:
quelle
Sie können Ihren Spaltennamen wie folgt in Klammern setzen:
Oder
Legen Sie eine temporäre Tabelle ein und verwenden Sie sie nach Belieben.
Beispiel:
Hier gehe ich einfach davon aus, dass Ihr Tabellenname nur eine Spalte enthält (dh von).
quelle
[from]
die einzige Spalte ist, die esyour_tablename
gibt."[Total]"
? Oder gibt es vielleicht einen Weg, dem zu entkommen[\[Total\]]
?Ich habe das gleiche Problem ausgeführt, als ich versucht habe, eine Spalte zu aktualisieren , deren Name ein Schlüsselwort war . Die obige Lösung hat mir nicht geholfen. Ich habe es gelöst, indem ich einfach den Namen der Tabelle wie folgt angegeben habe:
quelle
Folgendes wird perfekt funktionieren:
quelle
In MySQL können Sie alternativ zur Verwendung von Anführungszeichen (`) die Benutzeroberfläche verwenden, um Spaltennamen zu ändern. Klicken Sie mit der rechten Maustaste auf die Tabelle> Tabelle ändern> Bearbeiten Sie den Spaltennamen, der das Schlüsselwort sql enthält> Festschreiben.
Hinweis: Das oben Genannte funktioniert in MySQL nicht
quelle
Nach den Antworten hier und meiner eigenen Erfahrung zu urteilen. Die einzig akzeptable Antwort, wenn Sie vorhaben, portabel zu sein, besteht darin, keine SQL-Schlüsselwörter für Tabellen-, Spalten- oder andere Namen zu verwenden.
Alle diese Antworten funktionieren in den verschiedenen Datenbanken, aber anscheinend unterstützen viele die ANSI-Lösung nicht.
quelle