sql >> Databasteknik >  >> RDS >> Oracle

Kan inte använda kolumnnamn i urvalsfrågan på sqlfiddle (oracle)

[TL;DR] Det enklaste att göra är att aldrig använda dubbla citattecken runt objektnamn och bara låta Oracle hantera skiftlägeskänsligheten på sitt standardsätt.

Du kan dock använda dubbla citattecken 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
//

Fråga 1 :

SELECT "ProductName" FROM products

Resultat :

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

Oracle-databaser är som standard skiftlägeskänsliga; men de kommer också, som standard, att konvertera allt till versaler så att skiftlägeskänsligheten abstraheras från dig, användaren. Det är bara när du använder dubbla citattecken som Oracle använder fallet du anger för identifieraren.

Eftersom du använde citattecken i CREATE TABLE Du måste också använda citattecken i SELECT satser med det exakta skiftläge som används vid skapande av tabeller.

Så kolumnnamnet är inte ProductName det är "ProductName" (med dubbla citattecken).

En bättre lösning är att inte använda dubbla citattecken:

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

Fråga 1 :

SELECT ProductName FROM products

Resultat :

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


  1. Hur HOUR() fungerar i MariaDB

  2. Informationsschema och primärnycklar

  3. MySQL välj rader där left join är null

  4. SQLite onUpgrade() frustration