Oracle
 sql >> Base de données >  >> RDS >> Oracle

Impossible d'utiliser les noms de colonne dans la requête select sur sqlfiddle (oracle)

[TL;DR] La chose la plus simple à faire est de ne jamais utiliser de guillemets doubles autour des noms d'objets et de laisser Oracle gérer la sensibilité à la casse de sa manière par défaut.

Cependant, vous pouvez utiliser des guillemets doubles dans SQLFiddle :

SQL Fiddle

Configuration du schéma 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
//

Requête 1 :

SELECT "ProductName" FROM products

Résultats :

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

Les bases de données Oracle sont, par défaut, sensibles à la casse ; cependant, ils convertiront également, par défaut, tout en majuscules afin que la sensibilité à la casse soit abstraite de vous, l'utilisateur. Ce n'est que lorsque vous utilisez des guillemets doubles qu'Oracle utilisera la casse que vous spécifiez pour l'identifiant.

Puisque vous avez utilisé des identifiants entre guillemets dans le CREATE TABLE déclaration, vous devrez également utiliser des identifiants entre guillemets dans le SELECT instructions avec la casse exacte utilisée dans la création de table.

Ainsi, le nom de la colonne n'est pas ProductName c'est "ProductName" (avec les guillemets doubles).

Une meilleure solution consiste à ne pas utiliser de guillemets :

SQL Fiddle

Configuration du schéma 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
//

Requête 1 :

SELECT ProductName FROM products

Résultats :

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