2011-07-25 41 views
5

tôi đã nhận thấy trong MySQL một mệnh đề where như WHERE x = 'Test' sẽ phù hợp với bất kể trường hợp ('test', 'test', vv)SQL và điều kiện Insensitive Trường hợp

Khi sử dụng PDO, nó là công bằng khi cho rằng này trường hợp với hầu hết các máy chủ cơ sở dữ liệu là gì? Ví dụ, nếu tôi sử dụng MSSQL hoặc Oracle, đây có phải là trường hợp tương tự không?

+0

@rabudde Tôi nghĩ rằng đó là trường hợp, nhưng tôi có thể đảm bảo với bạn rằng truy vấn phù hợp không nhạy cảm. –

+0

Độ nhạy trường hợp phụ thuộc vào đối chiếu cột. – Karolis

Trả lời

8

Đó không phải là máy chủ mà nó phụ thuộc vào, nhưng đối chiếu. Hầu hết các cơ sở dữ liệu sẽ mặc định cho một trường hợp collation insensitive, vì vậy bạn có thể giả định rằng, nhưng nếu bạn đã từng chạy vào một trong đó là trường hợp nhạy cảm nó rất dễ dàng để thay đổi.

+0

có thể có các collations nhạy cảm/không nhạy cảm trên từng trường cơ sở không? hoặc là nó trên bảng? –

+1

@Lea Vâng. – Karolis

+1

Bạn có thể chỉ định đối chiếu không chỉ cho một cột cụ thể mà còn cho một so sánh cụ thể bằng cách chỉ định 'COLLATE collation_name' khi cần thiết. –

0

Bạn nói đúng, sql nói chung không phân biệt chữ hoa chữ thường cho khớp chuỗi và sẽ xuất hiện ở hầu hết các máy chủ.

Dưới đây là một bài viết cho thấy cách làm một trường hợp nhạy cảm theo các cách khác nhau mặc dù nếu bạn cần!

http://vyaskn.tripod.com/case_sensitive_search_in_sql_server.htm

1

Oracle phân biệt chữ hoa chữ thường với dữ liệu theo mặc định ví dụ:

select * from 'test'; 

không bằng

select * from 'TEST'; 

Được một lúc kể từ khi tôi cuối cùng sử dụng chúng nhưng tôi dường như nhớ lại trường hợp Informix beiung nhạy cảm và Sybase tôi nghĩ là phụ thuộc vào đối chiếu.

Như đã lưu ý bởi máy chủ SQL trả lời khác phụ thuộc vào đối chiếu.

Vì vậy, tôi nghĩ câu trả lời thực sự duy nhất là tùy thuộc vào mặc định RDBMS

1

Máy chủ SQL không phân biệt chữ hoa chữ thường. Trong SQL Server, bạn có thể sử dụng đối chiếu để sử dụng so sánh trường hợp nhạy cảm, xem here.

Oracle phân biệt chữ hoa chữ thường theo mặc định. Bạn có thể sử dụng câu lệnh 'UPPER' để thực hiện tìm kiếm phân biệt chữ hoa chữ thường, xem here.

+0

bạn có biết liệu 'UPPER' có phải là chuẩn cho tất cả SQL không? Có một danh sách các chức năng tiêu chuẩn/etc mà tôi có thể sử dụng để tham khảo? Cảm ơn –

Các vấn đề liên quan