Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Spaltennamen können nicht in der ausgewählten Abfrage auf sqlfiddle (Oracle) verwendet werden

[TL;DR] Das Einfachste zu tun ist, niemals doppelte Anführungszeichen um Objektnamen zu verwenden und Oracle die Groß- und Kleinschreibung einfach in seiner Standardweise verwalten zu lassen.

Sie können jedoch in SQLFiddle doppelte Anführungszeichen verwenden:

SQL-Geige

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

Abfrage 1 :

SELECT "ProductName" FROM products

Ergebnisse :

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

Bei Oracle-Datenbanken wird standardmäßig zwischen Groß- und Kleinschreibung unterschieden; sie werden jedoch auch standardmäßig alles in Großbuchstaben umwandeln, sodass die Groß- und Kleinschreibung von Ihnen, dem Benutzer, abstrahiert wird. Nur wenn Sie doppelte Anführungszeichen verwenden, verwendet Oracle die Groß-/Kleinschreibung, die Sie für den Bezeichner angeben.

Da Sie Bezeichner in Anführungszeichen in CREATE TABLE verwendet haben -Anweisung müssen Sie auch Bezeichner in Anführungszeichen in SELECT verwenden Anweisungen mit der genauen Groß- und Kleinschreibung, die bei der Tabellenerstellung verwendet wird.

Der Spaltenname ist also nicht ProductName es ist "ProductName" (mit den doppelten Anführungszeichen).

Eine bessere Lösung besteht darin, keine doppelten Anführungszeichen zu verwenden:

SQL-Geige

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

Abfrage 1 :

SELECT ProductName FROM products

Ergebnisse :

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