Các bạn, đây là một trong những cuộc thảo luận quan trọng về PostgreSQL.
Tất cả các số nhận dạng, bao gồm cả tên cột, có Phân biệt chữ hoa chữ thường trong PostgreSQL không?
Vâng: khi bạn xác định giá trị nhận dạng trong dấu ngoặc kép, nó là Mã phân biệt chữ hoa chữ thường.
Không: khi bạn không sử dụng dấu ngoặc kép cho số nhận dạng, nó không phải là Phân biệt chữ hoa chữ thường.
Ví dụ:
Với dấu ngoặc kép:
1 2 3 | CREATE TABLE "Test" (rno integer); SELECT *FROM Test /*True...*/ SELECT *FROM test; /*False...not work*/ |
Không có dấu ngoặc kép:
1 2 3 4 | CREATE TABLE Test(rno integer); SELECT *FROM Test /*True...*/ SELECT *FROM teST /*True...*/ SELECT *FROM test /*True...*/ |
Lời khuyên của tôi: Không bao giờ sử dụng dấu ngoặc kép cho bất kỳ số nhận dạng nào. Nếu không, bạn sẽ phải đối mặt với vấn đề phân biệt chữ hoa chữ thường.
Khi bạn không sử dụng dấu ngoặc kép, PostgreSQL lưu trữ nội bộ tất cả các số nhận dạng trong phần sau nhỏ và bạn có thể truy cập tất cả các số nhận dạng đó trong mọi trường hợp.
Khi bạn tạo bảng của mình bằng PGAdmin UI, theo mặc định, nó tạo tất cả các số nhận dạng có dấu ngoặc kép.
Luôn cố gắng tạo các đối tượng cơ sở dữ liệu của bạn bằng cách sử dụng tập lệnh SQL.