Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Übergeben Sie die Nummer als Spaltennamen in der Select-Anweisung von Sql

Sie wählen einen String-Literalwert '5' aus für jede Zeile in Ihrer Tabelle:

select 5 from mytable_name;

Und das funktioniert gut. Denn im SELECT Anweisung können Sie auswählen:

  • Spaltenreferenz,
  • Literalwert wie in Ihrem Fall.
  • Funktion.
  • Wertausdruck.
  • Ausdruck auswählen.

Wie von Standard-SQL definiert:

Aktualisierung:

Wenn Sie jedoch eine Spalte mit einem Namen haben, der eine Zahl ist, wie in Ihrem Fall, müssen Sie sie maskieren, um die Werte darin wie folgt auszuwählen:

 SELECT `143` FROM Table1;

Dadurch werden alle Zeilen in der Spalte 143 ausgewählt .

Aber das hier:

 SELECT 143 FROM Table1;

Wählt das Zeichenfolgenliteral 143 für jede in der Tabelle gefundene Zeile aus.

Beachten Sie Folgendes: Versuchen Sie nach Möglichkeit, diese Spalten nicht auf diese Weise zu benennen. Es wird empfohlen und ist eine bewährte Vorgehensweise, dies nicht zu tun.

SQL-Fiddle-Demo

Aktualisierung 2:

Beachten Sie dies, wenn Sie 143 auswählen oder '143' , oder sogar "143" Dadurch wird der Literalwert 143 ausgewählt nicht das Spaltendatum. Die folgenden sind gleich:

SELECT 143 FROM Table1;
SELECT '143' FROM Table1;
SELECT "143" FROM Table1;

Alle diese SELECT s wählt nicht die Daten in der Spalte aus, sondern den Literalwert 143 nicht die Spaltendaten. Siehe diese Demo:

Demo

Sie müssen den Spaltennamen mit den beiden maskieren:

``

So:

SELECT `143` FROM table1;

Nicht:

SELECT '143' FROM table1'

Wie das, was ich hier gemacht habe:

Die richtige Demo