Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nie można użyć nazw kolumn w zapytaniu wybierającym w sqlfiddle (Oracle)

[TL;DR] Najprostsza rzecz do zrobienia jest nigdy nie używać podwójnych cudzysłowów wokół nazw obiektów i po prostu pozwolić oracle zarządzać rozróżnianiem wielkości liter w sposób domyślny.

Możesz jednak użyć cudzysłowów w SQLFiddle:

Skrzypce SQL

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

Zapytanie 1 :

SELECT "ProductName" FROM products

Wyniki :

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

W bazach danych Oracle domyślnie rozróżniana jest wielkość liter; jednak domyślnie przekonwertują wszystko na wielkie litery, aby rozróżnianie wielkości liter było oderwane od Ciebie, użytkownika. Tylko wtedy, gdy używasz cudzysłowów, Oracle użyje wielkości liter, które określisz dla identyfikatora.

Ponieważ użyłeś cytowanych identyfikatorów w CREATE TABLE oświadczenie będziesz musiał również użyć cytowanych identyfikatorów w SELECT oświadczenia z dokładnymi wielkościami liter używanymi przy tworzeniu tabeli.

Tak więc nazwa kolumny to nie ProductName to jest "ProductName" (z podwójnymi cudzysłowami).

Lepszym rozwiązaniem jest nie używanie podwójnych cudzysłowów:

Skrzypce SQL

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

Zapytanie 1 :

SELECT ProductName FROM products

Wyniki :

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wybrać dostawcę Oracle dla aplikacji .Net?

  2. Oracle sql znajdź różnicę czasu (oba czasy w ciągu)

  3. Instrukcja Oracle SQL w java

  4. Jak rozwiązać wyjątek java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver w czasie wykonywania?

  5. Dynamiczny obrót w Oracle sql