Chúng ta có thể làm cho MySQL phân biệt chữ hoa chữ thường không?
Các ví dụ trong các phần trước đã được thực hiện mà không quan tâm đến chữ cái. Nhưng đôi khi bạn cần đảm bảo rằng một thao tác chuỗi phân biệt chữ hoa chữ thường và ngược lại. Phần này mô tả cách thực hiện điều đó đối với các phép so sánh thông thường. công thức 4. 11 bao hàm độ nhạy chữ hoa chữ thường trong các hoạt động khớp mẫu Show Theo mặc định, so sánh chuỗi trong MySQL không phân biệt chữ hoa chữ thường mysql> Việc thiếu phân biệt chữ hoa chữ thường cũng áp dụng cho các so sánh thứ tự tương đối mysql> Nếu bạn đã quen thuộc với thứ tự đối chiếu ASCII, bạn biết rằng các chữ cái viết thường có mã ASCII cao hơn các chữ cái viết hoa, do đó, kết quả trong cột so sánh thứ hai của truy vấn trước đó có thể làm bạn ngạc nhiên. Những kết quả đó phản ánh rằng việc sắp xếp chuỗi được thực hiện theo mặc định mà không quan tâm đến chữ cái, vì vậy cả mysql> 0 và mysql> 1 đều được coi là ít hơn về mặt từ vựng so với mysql> 2So sánh chuỗi chỉ phân biệt chữ hoa chữ thường nếu ít nhất một trong các toán hạng là chuỗi nhị phân. Để kiểm soát độ nhạy trường hợp trong so sánh chuỗi, hãy sử dụng các kỹ thuật sau
Các nguyên tắc tương tự có thể được áp dụng cho các hàm so sánh chuỗi. Ví dụ: mysql> 7 nhận hai đối số chuỗi và trả về -1, 0 hoặc 1, tùy thuộc vào chuỗi đầu tiên về mặt từ vựng có nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai hay không. Cho đến MySQL 4. 0. 0, mysql> 7 phân biệt chữ hoa chữ thường; mysql> 3Tuy nhiên, kể từ MySQL 4. 0. 1, mysql> 7 không phân biệt chữ hoa chữ thườngmysql> 5Để bảo tồn pre-4. 0. 1 hành vi, biến một trong các đối số thành chuỗi nhị phân mysql> 6Nhân tiện, hãy lưu ý đặc biệt về thực tế là các giá trị trả về bằng 0 và khác 0 từ mysql> 7 biểu thị sự bình đẳng và bất bình đẳng. Điều này khác với toán tử so sánh mysql> 1, trả về 0 và khác 0 cho bất đẳng thức và đẳng thứcĐể tránh bất ngờ khi so sánh chuỗi, hãy biết các quy tắc chung xác định xem chuỗi có phải là nhị phân hay không
Tóm lại, các phép so sánh phân biệt chữ hoa chữ thường nếu chúng liên quan đến một chuỗi ký tự nhị phân hoặc biểu thức chuỗi hoặc một cột mysql> 5 mysql> 3, mysql> 6 mysql> 3 hoặc mysql> 01. Các phép so sánh không phân biệt chữ hoa chữ thường nếu chúng chỉ liên quan đến các chuỗi ký tự không nhị phân hoặc biểu thức chuỗi hoặc các cột mysql> 5, mysql> 6, mysql> 8, mysql> 9 hoặc mysql> 00Các cột mysql> 8 và mysql> 9 không phân biệt chữ hoa chữ thường. Hơn nữa, vì chúng được lưu trữ nội bộ dưới dạng số, bạn không thể khai báo chúng phân biệt chữ hoa chữ thường trong định nghĩa bảng bằng cách thêm từ khóa mysql> 3. Tuy nhiên, bạn vẫn có thể sử dụng từ khóa mysql> 3 trước các giá trị mysql> 8 hoặc mysql> 9 để so sánh nhằm tạo ra một thao tác phân biệt chữ hoa chữ thườngNếu bạn thấy rằng bạn đã khai báo một cột bằng cách sử dụng loại không phù hợp với loại so sánh mà bạn thường sử dụng, hãy sử dụng mysql> 38 mysql> 39 để thay đổi loại. Giả sử bạn có một bảng trong đó bạn lưu trữ các bài báomysql> 8Ở đây, cột mysql> 50 được khai báo là mysql> 01, đây là loại phân biệt chữ hoa chữ thường. Nếu bạn muốn chuyển đổi cột để nó không phân biệt chữ hoa chữ thường, bạn có thể thay đổi loại từ mysql> 01 thành mysql> 00 bằng cách sử dụng một trong hai câu lệnh mysql> 38 mysql> 39 nàymysql> 5Trước MySQL 3. 22. 16, mysql> 38 mysql> 39. mysql> 58 không khả dụng, trong trường hợp đó bạn chỉ có thể sử dụng mysql> 38 mysql> 39. mysql> 61. Xem Chương 8 để biết thêm thông tin
Làm thế nào để sử dụng trường hợpKhi tìm kiếm một phần chuỗi trong MySQL với LIKE, bạn sẽ khớp phân biệt chữ hoa chữ thường theo mặc định*. Nếu bạn muốn đối sánh phân biệt chữ hoa chữ thường, bạn có thể truyền giá trị dưới dạng nhị phân và sau đó thực hiện so sánh từng byte với. so sánh từng ký tự . Điều duy nhất bạn cần thêm vào truy vấn của mình là BINARY.
Cách tạo trường hợp bảng MySQLHiển thị hoạt động trên bài đăng này. . Định vị tệp tại /etc/mysql/my. cnf Chỉnh sửa tệp bằng cách thêm các dòng sau. [mysqld] Lower_case_table_names=1 sudo /etc/init. khởi động lại d/mysql Chạy các biến mysqladmin -u root -p. bảng grep để kiểm tra xem Lower_case_table_names có phải là 1 không Bạn có thể tạo trường hợp SQL khôngSQL Server, theo mặc định, không phân biệt chữ hoa chữ thường; . Cách để xác định xem cơ sở dữ liệu hoặc đối tượng cơ sở dữ liệu là kiểm tra thuộc tính "COLLATION" của nó và tìm kiếm "CI" hoặc "CS" trong kết quả. it is possible to create a case-sensitive SQL Server database and even to make specific table columns case sensitive. The way to determine if a database or database object is to check its "COLLATION" property and look for "CI" or "CS" in the result. |