2016-03-24 16 views
5

Làm cách nào để tắt chế độ trường hợp bắt buộc đối với tên bảng và cột trong HSQL?Tắt chữ hoa cho tên bảng và cột trong HSQL?

<artifactId>hsqldb</artifactId> 
<version>2.3.1</version> 

OS:Windows 7 x64

+1

Lưu trữ tên in hoa là theo yêu cầu của tiêu chuẩn SQL. Tôi không nghĩ rằng bạn có thể tắt nó trong HSQLDB –

+0

bạn có thể thử các từ đồng nghĩa, ví dụ và ddl bên dưới TẠO SYNONYM REG CHO OTHER_SCHEMA.REGISTRATION_DETAIL_TABLE ; CHỌN R_ID, R_DATE FROM REG WHERE R_DATA> CURRENT_DATE - 3 NGÀY –

Trả lời

2

Tôi không chắc chắn, tôi hiểu vấn đề một cách chính xác nhưng chỉ cố gắng để đưa một số nỗ lực.

SET DATABASE COLLATION SQL_TEXT_UCC 

Có thể bạn có thể tham khảo http://hsqldb.org/doc/guide/dbproperties-chapt.html

+0

Từ tài liệu, có vẻ như đây là điều phù hợp để sử dụng. Thật không may, thậm chí thêm tuyên bố này vào kịch bản tạo DB của tôi, các so sánh có vẻ vẫn được thực hiện với trường hợp nhạy cảm. –

+0

Lưu ý cho bạn: bỏ phiếu nối tiếp sẽ được đảo ngược vào cuối ngày. Đừng ngạc nhiên khi bạn mất 200 đại diện vào ngày mai. Gian lận hệ thống không hoạt động theo cách đó. – Adriaan

+0

KHÔNG SỬ DỤNG NÀY, từ đặc tả nó không phải về ** tên ** nhưng dữ liệu bên trong ** VARCHAR ** trường. –

9

Các quy tắc xung quanh này được giải thích trong HSQLDB documentation:

Khi một đối tượng cơ sở dữ liệu được tạo ra với một trong những câu CREATE hoặc đổi tên với ALTER tuyên bố, nếu tên được kèm theo trong dấu ngoặc kép , tên chính xác được sử dụng như là hình thức trường hợp bình thường. Nhưng nếu nó là không kèm theo dấu ngoặc kép, tên được chuyển thành chữ hoa và phiên bản chữ hoa này được lưu trữ trong cơ sở dữ liệu dưới dạng mẫu bình thường .

quy tắc Trường hợp nhạy cảm cho định danh có thể được mô tả đơn giản là sau:

  • tất cả các phần của câu lệnh SQL được chuyển đổi thành chữ hoa trước khi chế biến, ngoại trừ định danh trong dấu ngoặc kép và các chuỗi trong các mã đơn đơn lẻ
  • , cả hai được bỏ chọn và trích dẫn kép, sau đó được coi là phân biệt chữ hoa chữ thường
  • hầu hết các công cụ cơ sở dữ liệu tuân thủ cùng một quy tắc, ngoại trừ một số khía cạnh, MySQL và MS SQLServer.

AFAIK hành vi này không thể tắt được. (Cần lưu ý rằng SQL chuẩn không phân biệt chữ hoa chữ thường khi các mã định danh được trích dẫn không được sử dụng.) Nhưng như đã đề cập ở trên, một mã nhận dạng chữ thường có thể được xác định bằng cách đặt trong dấu ngoặc kép, ví dụ:

CREATE TABLE "lowercasetablename" ("lowercasecolname" INT); 
SELECT "lowercasecolname" FROM "lowercasetablename"; 
Các vấn đề liên quan