[TL; DR] 最も簡単なこと オブジェクト名を二重引用符で囲むことは絶対にせず、Oracleにデフォルトの方法で大文字小文字の区別を管理させるだけです。
ただし、SQLFiddleでは二重引用符を使用できます:
Oracle11gR2スキーマのセットアップ :
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
//
クエリ1 :
SELECT "ProductName" FROM products
結果 :
| ProductName |
|-------------|
| Jarlsberg |
| Mascarpone |
| Gorgonzola |
Oracleデータベースは、デフォルトで大文字と小文字が区別されます。ただし、デフォルトでは、大文字と小文字の区別がユーザーから抽象化されるように、すべてが大文字に変換されます。 Oracleが識別子に指定した大文字小文字を使用するのは、二重引用符を使用する場合のみです。
CREATE TABLE
で引用符で囲まれた識別子を使用したため ステートメントでは、SELECT
で引用符で囲まれた識別子も使用する必要があります テーブルの作成に使用された正確な大文字と小文字を区別するステートメント。
したがって、列名はProductName
ではありません "ProductName"
です (二重引用符付き)。
より良い解決策は、二重引用符を使用しないことです:
Oracle11gR2スキーマのセットアップ :
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
//
クエリ1 :
SELECT ProductName FROM products
結果 :
| PRODUCTNAME |
|-------------|
| Jarlsberg |
| Mascarpone |
| Gorgonzola |