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

Impossibile utilizzare i nomi delle colonne nella query di selezione su sqlfiddle (oracle)

[TL;DR] La cosa più semplice da fare è non usare mai le doppie virgolette attorno ai nomi degli oggetti e lasciare che Oracle gestisca la distinzione tra maiuscole e minuscole nel modo predefinito.

Tuttavia, puoi usare le virgolette doppie in SQLFiddle:

SQL Fiddle

Impostazione dello schema Oracle 11g R2 :

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
//

Query 1 :

SELECT "ProductName" FROM products

Risultati :

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

Per impostazione predefinita, i database Oracle fanno distinzione tra maiuscole e minuscole; tuttavia, per impostazione predefinita, convertiranno anche tutto in maiuscolo in modo che la distinzione tra maiuscole e minuscole venga sottratta a te, l'utente. È solo quando utilizzi le virgolette doppie che Oracle utilizzerà il caso specificato per l'identificatore.

Poiché hai utilizzato gli identificatori tra virgolette in CREATE TABLE istruzione dovrai anche utilizzare identificatori tra virgolette in SELECT istruzioni con il caso esatto utilizzato nella creazione della tabella.

Quindi, il nome della colonna non è ProductName è "ProductName" (con le virgolette).

Una soluzione migliore è non usare le virgolette doppie:

SQL Fiddle

Impostazione dello schema Oracle 11g R2 :

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
//

Query 1 :

SELECT ProductName FROM products

Risultati :

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