MySQL VARCHAR phân biệt chữ hoa chữ thường
Mức độ trừu tượng cao do Entity Framework cung cấp đôi khi thách thức các nhà phát triển truy cập vào bộ tính năng đầy đủ có sẵn thông qua SQL gốc của một máy chủ cơ sở dữ liệu cụ thể. Trong chủ đề này, chúng tôi sẽ trình bày cách sử dụng đối chiếu trong MySQL để kiểm soát cài đặt phân biệt chữ hoa chữ thường trong các truy vấn do Entity Framework tạo Show Đối chiếu xác định một thứ tự thông qua quá trình so sánh hai chuỗi ký tự đã cho và quyết định chuỗi nào sẽ xuất hiện trước chuỗi ký tự kia Tài liệu Máy chủ MySQL nói. "Đối với các chuỗi không nhị phân (CHAR, VARCHAR, TEXT), tìm kiếm chuỗi sử dụng đối chiếu các toán hạng so sánh. Đối với các chuỗi nhị phân (BINARY, VARBINARY, BLOB), phép so sánh sử dụng các giá trị số của các byte trong toán hạng; Bộ ký tự và đối chiếu mặc định là latin1 và latin1_swedish_ci, do đó, so sánh chuỗi không nhị phân không phân biệt chữ hoa chữ thường theo mặc định. " Có hai cách khác để làm cho tìm kiếm phân biệt chữ hoa chữ thường
dotConnect cho MySQL cung cấp các cách sau để truy cập chức năng này từ Entity Framework
Dưới đây là ví dụ về việc sử dụng chức năng này CREATE TABLE DEPT ( DEPTNO INT PRIMARY KEY, DNAME VARCHAR(14), LOC VARCHAR(13) ); INSERT INTO DEPT VALUES (15,'New Department','Denver'); INSERT INTO DEPT VALUES (16,'NEW DEPARTMENT','Denver'); INSERT INTO DEPT VALUES (17,'new department','Denver'); Câu lệnh SELECT sau đây trả về ba hàng SELECT * FROM DEPT WHERE DNAME LIKE 'n%' Câu lệnh SELECT sau đây trả về một hàng SELECT * FROM DEPT WHERE DNAME COLLATE latin1_bin LIKE 'n%' Và cái sau trả về hai hàng SELECT * FROM DEPT WHERE DNAME COLLATE latin1_bin LIKE 'n%' Chạy công cụ dbMonitor để cho phép theo dõi hoạt động cơ sở dữ liệu và xem các truy vấn, được tạo bởi các ví dụ về Khung thực thể của chúng tôi Ví dụ sau minh họa việc sử dụng MySqlFunctions. phương pháp đối chiếu trong so sánh hoặc trong. Chứa/. Bắt đầu với/. EndsWith phương pháp var monitor = new Devart.Data.MySql.MySqlMonitor() { IsActive = true }; using (MyDbContext context = new MyDbContext()) { var equals_query = context.Depts.Where(d => MySqlFunctions.Collate(d.DNAME, "latin1_bin") == "New Department"); var equals_results = equals_query.ToList(); var not_equals_query = context.Depts.Where(d => MySqlFunctions.Collate(d.DNAME, "latin1_bin") != "New Department"); var not_equals_results = not_equals_query.ToList(); var like_query = context.Depts.Where(d => MySqlFunctions.Collate(d.DNAME, "latin1_bin").Contains("New")); var like_results = like_query.ToList(); } Dim monitor As New Devart.Data.MySql.MySqlMonitor monitor.IsActive = True Using context As New MyDbContext Dim equals_query = context.Depts.Where(Function(d) MySqlFunctions.Collate(d.DNAME, "latin1_bin") = "New Department") Dim equals_results = equals_query.ToList() Dim not_equals_query = context.Depts.Where(Function(d) MySqlFunctions.Collate(d.DNAME, "latin1_bin") <> "New Department") Dim not_equals_results = not_equals_query.ToList() Dim like_query = context.Depts.Where(Function(d) MySqlFunctions.Collate(d.DNAME, "latin1_bin").Contains("New")) Dim like_results = like_query.ToList() End Using Và ví dụ sau sử dụng cấu hình. Tùy chọn truy vấn. So sánhCollation và cấu hình. Tùy chọn truy vấn. Tùy chọn LikeCollation để đặt đối chiếu trên toàn cầu Theo mặc định, SQL Server 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ả Bạn có thể đạt được tính duy nhất phân biệt chữ hoa chữ thường và tìm kiếm không phân biệt chữ hoa chữ thường với sự trợ giúp của hai cách sau –
Kiểu dữ liệu VARBINARYĐể làm việc với kiểu dữ liệu VARBINARY, trước tiên chúng ta hãy tạo một bảng. Truy vấn để tạo một bảng như sau - Là dữ liệu trong trường hợp MySQLTên bảng được lưu trữ bằng chữ thường trên đĩa và so sánh tên không phân biệt chữ hoa chữ thường . MySQL chuyển đổi tất cả các tên bảng thành chữ thường khi lưu trữ và tra cứu. Hành vi này cũng áp dụng cho tên cơ sở dữ liệu và bí danh bảng.
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.
Trường hợp thay thế MySQLĐịnh nghĩa và cách sử dụng
. Ghi chú. Hàm này thực hiện thay thế phân biệt chữ hoa chữ thường
Trường hợp SQL TEXTCác từ khóa SQL (SELECT, FROM, WHERE, v.v. ) không phân biệt chữ hoa chữ thường , nhưng chúng thường được viết hoa tất cả. Tên bảng và cột phân biệt chữ hoa chữ thường trong một số cài đặt. MySQL cung cấp một cài đặt cho phép bạn bật hoặc tắt nó. |