Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Không thể sử dụng tên cột trong truy vấn chọn lọc trên sqlfiddle (oracle)

[TL; DR] Điều đơn giản nhất điều cần làm là không bao giờ sử dụng dấu ngoặc kép xung quanh tên đối tượng và chỉ để oracle quản lý phân biệt chữ hoa chữ thường theo cách mặc định của nó.

Tuy nhiên, bạn có thể sử dụng dấu ngoặc kép trong SQLFiddle:

SQL Fiddle

Thiết lập lược đồ 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
//

Truy vấn 1 :

SELECT "ProductName" FROM products

Kết quả :

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

Cơ sở dữ liệu Oracle, theo mặc định, phân biệt chữ hoa chữ thường; tuy nhiên, theo mặc định, chúng cũng sẽ chuyển đổi mọi thứ thành chữ hoa để phân biệt chữ hoa chữ thường được tóm tắt từ bạn, người dùng. Chỉ khi bạn sử dụng dấu ngoặc kép thì Oracle mới sử dụng trường hợp bạn chỉ định cho số nhận dạng.

Vì bạn đã sử dụng số nhận dạng được trích dẫn trong CREATE TABLE bạn cũng sẽ cần sử dụng các số nhận dạng được trích dẫn trong SELECT câu lệnh với trường hợp chính xác được sử dụng trong tạo bảng.

Vì vậy, tên cột không phải là ProductName nó là "ProductName" (với dấu ngoặc kép).

Một giải pháp tốt hơn là không sử dụng dấu ngoặc kép:

SQL Fiddle

Thiết lập lược đồ 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
//

Truy vấn 1 :

SELECT ProductName FROM products

Kết quả :

| 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. Truy vấn Oracle PL / SQL không biên dịch

  2. Tạo bảng trong thủ tục

  3. làm thế nào để truyền kết nối dbcp tới kết nối oracle?

  4. Cách bật chế độ nhật ký lưu trữ trong cơ sở dữ liệu Oracle 19c

  5. Cập nhật nhiều giá trị cột trong bảng bằng cách sử dụng một truy vấn