[TL; DR] Điều đơn giản nhất 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ó.
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.
CREATE TABLE tEsT ( column_name NUMBER );
Sau đó:
SELECT COUNT(*) FROM test;
SELECT COUNT(*) FROM Test;
SELECT COUNT(*) FROM TEST;
SELECT COUNT(*) FROM tEsT;
Tất cả sẽ cho cùng một đầu ra và:
SELECT * FROM USER_TABLES;
Kết quả đầu ra:
TABLE_NAME
----------
TEST
(Lưu ý tên bảng được viết hoa).
Nếu bạn sử dụng dấu ngoặc kép thì oracle sẽ tôn trọng việc bạn sử dụng chữ hoa và chữ thường trong tên bảng:
CREATE TABLE "tEsT" ( column_name NUMBER );
và:
SELECT * FROM USER_TABLES;
Kết quả đầu ra:
TABLE_NAME
----------
TEST
tEsT
(Lưu ý:hiện có hai bảng được đặt tên là TEST
và tEsT
và oracle đã tôn trọng độ phân biệt chữ hoa chữ thường của cái thứ hai - cái được tạo bằng dấu ngoặc kép).
(Cũng lưu ý:SELECT * FROM tEsT
sẽ chọn từ bảng đầu tiên, đã được chuyển đổi thành chữ hoa, nhưng SELECT * FROM "tEsT"
bắt buộc phải chọn từ thứ hai mặc dù các truy vấn giống hệt nhau ngoài các dấu ngoặc kép).