sql >> Databasteknik >  >> RDS >> Mysql

Passera nummer som ett kolumnnamn i select-satsen i SQL

Du väljer ett bokstavligt strängvärde '5' för varje rad i din tabell:

select 5 from mytable_name;

Och det här fungerar bra. Eftersom i SELECT uttalande kan du välja:

  • Kolumnreferens,
  • Ordagrant värde som i ditt fall.
  • Funktion.
  • värdeuttryck.
  • Välj uttryck.

Enligt definitionen av standard SQL:

Uppdatering:

Men om du har en kolumn med ett namn är ett nummer som i ditt fall, måste du escape den för att välja värdena i den så här:

 SELECT `143` FROM Table1;

Detta kommer att välja alla rader i kolumnen 143 .

Men detta:

 SELECT 143 FROM Table1;

Väljer strängen literal 143 för varje rad som finns i tabellen.

Observera att: Om möjligt, försök att inte namnge dessa kolumner på det här sättet, det rekommenderas och en bästa praxis att inte göra detta.

SQL Fiddle Demo

Uppdatering 2:

Observera att om du väljer 143 eller '143' , eller till och med "143" detta kommer att välja det bokstavliga värdet 143 inte kolumndatumet. Följande är desamma:

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

Alla dessa SELECT s kommer inte att välja data i kolumnen, de kommer att välja det bokstavliga värdet 143 inte kolumndata. Se denna demo:

Demo

Du måste undkomma kolumnnamnet med de två:

``

Så här:

SELECT `143` FROM table1;

Inte:

SELECT '143' FROM table1'

Som det jag gjorde här:

Rätt demo



  1. MySQL dynamisk korstabell-fråga:Väljer underordnade poster som ytterligare kolumner

  2. Hur man skriver en SQL-fråga med dynamisk LIMIT

  3. Finns det någon mening med att använda LIMIT i EXISTS-frågan?

  4. OdbcConnection returnerar kinesiska tecken som ?