sql >> Databáze >  >> RDS >> Oracle

Ve výběrovém dotazu na sqlfiddle (oracle) nelze použít názvy sloupců

[TL;DR] Nejjednodušší věc udělat, je nikdy nepoužívat dvojité uvozovky kolem jmen objektů a nechat Oracle řídit rozlišování malých a velkých písmen výchozím způsobem.

V SQLFiddle však můžete použít dvojité uvozovky:

SQL Fiddle

Nastavení schématu 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
//

Dotaz 1 :

SELECT "ProductName" FROM products

Výsledky :

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

Databáze Oracle standardně rozlišují velká a malá písmena; ve výchozím nastavení však také vše převedou na velká písmena, takže rozlišování velkých a malých písmen je abstrahováno od vás, uživatele. Pouze při použití dvojitých uvozovek Oracle použije případ, který zadáte pro identifikátor.

Protože jste použili identifikátory v uvozovkách v CREATE TABLE budete také muset použít identifikátory v uvozovkách v SELECT příkazy s přesnými velkými a malými písmeny použitými při vytváření tabulky.

Název sloupce tedy není ProductName je to "ProductName" (s dvojitými uvozovkami).

Lepším řešením je nepoužívat dvojité uvozovky:

SQL Fiddle

Nastavení schématu 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
//

Dotaz 1 :

SELECT ProductName FROM products

Výsledky :

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


  1. jak používat regexp_like Oracle v Hibernate HQL?

  2. Připojte se ke dvěma databázím

  3. Připojení ke Google Cloud SQL občas klesá

  4. Vložení MySQL pomocí smyčky While