sql >> Database >  >> RDS >> Oracle

Kan geen kolomnamen gebruiken in select-query op sqlfiddle (oracle)

[TL;DR] Het eenvoudigste te doen is om nooit dubbele aanhalingstekens rond objectnamen te gebruiken en Oracle de hoofdlettergevoeligheid op de standaardmanier te laten beheren.

U kunt echter dubbele aanhalingstekens gebruiken in SQLFiddle:

SQL Fiddle

Oracle 11g R2 Schema-instellingen :

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

Query 1 :

SELECT "ProductName" FROM products

Resultaten :

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

Oracle-databases zijn standaard hoofdlettergevoelig; ze zullen echter ook standaard alles naar hoofdletters converteren, zodat de hoofdlettergevoeligheid wordt geabstraheerd van u, de gebruiker. Alleen wanneer u dubbele aanhalingstekens gebruikt, zal Oracle het door u opgegeven hoofdlettergebruik voor de identifier gebruiken.

Aangezien u identifiers tussen aanhalingstekens gebruikt in de CREATE TABLE statement moet je ook identifiers tussen aanhalingstekens gebruiken in de SELECT uitspraken met de exacte hoofdlettergebruik bij het maken van tabellen.

De kolomnaam is dus niet ProductName het is "ProductName" (met de dubbele aanhalingstekens).

Een betere oplossing is om geen dubbele aanhalingstekens te gebruiken:

SQL Fiddle

Oracle 11g R2 Schema-instellingen :

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

Query 1 :

SELECT ProductName FROM products

Resultaten :

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


  1. JSON versus seriële array in database

  2. Maak verbinding met externe MySQL-server met SSL vanuit PHP

  3. Bereken leeftijd vanaf geboortedatum in mysql

  4. MySQL View controleren of gegevens NULL zijn