sql >> Database teknologi >  >> RDS >> Oracle

Kan ikke bruge kolonnenavne i udvalgte forespørgsler på sqlfiddle (oracle)

[TL;DR] Den enkleste ting at gøre er aldrig at bruge dobbelte anførselstegn omkring objektnavne og bare lade Oracle styre følsomheden af ​​store og små bogstaver på dens standardmåde.

Du kan dog bruge dobbelte anførselstegn i SQLFiddle:

SQL Fiddle

Oracle 11g R2 Schema Setup :

CREATE TABLE products
("P_Id" int, "ProductName" varchar2(10), "UnitPrice" numeric, "UnitsInStock" int, "UnitsOnOrder" int)
//

INSERT ALL 
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
 VALUES (1, 'Jarlsberg', 10.45, 16, 15)
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
 VALUES (2, 'Mascarpone', 32.56, 23, NULL)
INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
 VALUES (3, 'Gorgonzola', 15.67, 9, 20)
SELECT * FROM dual
//
 

Forespørgsel 1 :

SELECT "ProductName" FROM products
 

Resultater :

| ProductName | |-------------| | Jarlsberg | | Mascarpone | | Gorgonzola |

Oracle-databaser er som standard store og små bogstaver; dog vil de også som standard konvertere alt til store bogstaver, så følsomheden over for store og små bogstaver abstraheres fra dig, brugeren. Det er kun, når du bruger dobbelte anførselstegn, at Oracle bruger det tilfælde, du angiver for identifikatoren.

Siden du brugte cifre i CREATE TABLE sætningen skal du også bruge identifikatorer med anførselstegn i SELECT udsagn med det nøjagtige tilfælde, der blev brugt ved tabeloprettelse.

Så kolonnenavnet er ikke ProductName det er "ProductName" (med dobbelte anførselstegn).

En bedre løsning er ikke at bruge dobbelte anførselstegn:

SQL Fiddle

Oracle 11g R2 Schema Setup :

CREATE TABLE products(
  P_Id         int,
  ProductName  varchar2(10),
  UnitPrice    numeric,
  UnitsInStock int,
  UnitsOnOrder int
)
//

INSERT INTO products ( P_Id, ProductName, UnitPrice, UnitsInStock, UnitsOnOrder )
  SELECT 1, 'Jarlsberg', 10.45, 16, 15 FROM DUAL UNION ALL
  SELECT 2, 'Mascarpone', 32.56, 23, NULL FROM DUAL UNION ALL
  SELECT 3, 'Gorgonzola', 15.67, 9, 20 FROM DUAL
//
 

Forespørgsel 1 :

SELECT ProductName FROM products
 

Resultater :

| PRODUCTNAME | |-------------| | Jarlsberg | | Mascarpone | | Gorgonzola |

  1. Kan ikke vise data fra QSqlQueryModel i en QML TableView

  2. Laravel Eloquent vælg alle rækker med max created_at

  3. Mysql transaktion rollback ved fejl i opdatering

  4. Fjederstyret bønneinjektion i klasse med implementering af RowMapper