[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:
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:
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 |