Các hàm so sánh chuổi trong lệnh select
Hàm CHARINDEX trong SQL Server được sử dụng để tìm kiếm vị trí của một chuỗi ký tự nằm bên trong một chuỗi ký tự nào đó, giống như chúng ta dùng hàm FIND/SEARCH ở trong Excel. Hàm trả về kết quả là vị trí chuỗi con được tìm thấy. Show
HƯỚNG DẪN SỬ DỤNG HÀM CHARINDEX TRONG SQL SERVERHàm CHARINDEX trong SQL Server được sử dụng để tìm kiếm vị trí của một chuỗi ký tự nằm bên trong một chuỗi ký tự nào đó, giống như chúng ta dùng hàm FIND/SEARCH ở trong Excel. Hàm trả về kết quả là vị trí chuỗi con được tìm thấy. CÚ PHÁP HÀM CHARINDEXĐể chạy hàm CHARINDEX trong SQL Server, ta sử dụng cú pháp như sau: CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] ) Tham số:
Kiểu dữ liệu trả vềbigint nếu expressionToSearch có kiểu dữ liệu là nvarchar(max), varbinary(max), hoặc varchar(max) ; còn lại trả về kiểu int. Lưu ýNếu biểu thức expressionToFind hoặc biểu thức expressionToSearch có kiểu dữ liệu Unicode (nchar hoặc nvarchar) và biểu thức khác không có, thì hàm CHARINDEX sẽ chuyển đổi biểu thức khác đó thành kiểu dữ liệu Unicode. CHARINDEX không thể được sử dụng với các kiểu dữ liệu hình ảnh, ntext hoặc văn bản. Nếu biểu thức expressionToFind hoặc biểu thức expressionToSearch có giá trị NULL, CHARINDEX trả về NULL. Nếu CHARINDEX không tìm thấy biểu thứcToFind trong biểu thức Tìm kiếm, CHARINDEX trả về 0. CHARINDEX thực hiện so sánh dựa trên đối chiếu đầu vào. Để thực hiện so sánh trong một đối chiếu được chỉ định, hãy sử dụng COLLATE để áp dụng đối chiếu rõ ràng cho đầu vào. Vị trí bắt đầu được trả về là dựa trên 1, không dựa trên 0. 0x0000 (char (0)) là một ký tự không xác định trong các ảnh ghép Windows và không thể được đưa vào CHARINDEX. Ví dụ sử dụng hàm CHARINDEXVí dụ 1: Trả về vị trí bắt đầu của một chuỗiVí dụ sau đây tìm kiếm từ bicycle trong chuỗi ký tự được đặt trong biến @document. DECLARE @document VARCHAR(64); SELECT @document = ‘Reflectors are vital safety’ + ‘ components of your bicycle.’; SELECT CHARINDEX(‘bicycle’, @document); GO Kết quả là 48 Ví dụ 2: Tìm kiếm từ một vị trí nhất địnhVí dụ dưới đây sử dụng tham số tùy chọn start_location để bắt đầu tìm kiếm từ khóa vital tại vị trí bắt đầu từ vị trí thứ 5 trong chuỗi cần tìm tại biến @document DECLARE @document VARCHAR(64); SELECT @document = ‘Reflectors are vital safety’ + ‘ components of your bicycle.’; SELECT CHARINDEX(‘vital’, @document, 5); GO Kết quả là 16 Ví dụ 3: Tìm kiếm một chuỗi không tồn tạiVí dụ dưới đây hiển thị kết quả khi hàm CHARINDEX không tìm thấy chuỗi con expressionToFind trong chuỗi cha expressionToSearch. SQL DECLARE @document VARCHAR(64); SELECT @document = ‘Reflectors are vital safety’ + ‘ components of your bicycle.’; SELECT CHARINDEX(‘bike’, @document); GO Kết quả là: 0 Ví dụ 4: Thực hiện tìm kiếm phân biệt chữ hoa và chữ thường case-sensitive searchVí dụ sau sẽ thực hiện tìm kiếm phân biệt chữ hoa và chữ thường case-sensitive search để tìm từ TEST trong chuỗi ‘This is a Test“’. USE tempdb; GO –perform a case sensitive search SELECT CHARINDEX ( ‘TEST’, ‘This is a Test’ COLLATE Latin1_General_CS_AS); Kết quả là 0 Ví dụ sau sẽ thực hiện tìm kiếm phân biệt chữ hoa và chữ thường case-sensitive search để tìm từ Test trong chuỗi ‘This is a Test“’. USE tempdb; GO SELECT CHARINDEX ( ‘Test’, ‘This is a Test’ COLLATE Latin1_General_CS_AS); Kết quả là 11 Ví dụ 5: Thực hiện tìm kiếm không phân biệt chữ hoa, chữ thường case-insensitive searchVí dụ sau sẽ thực hiện tìm kiếm không phân biệt chữ hoa và chữ thường case-insensitive search để tìm từ TEST trong chuỗi ‘This is a Test“’. Theo mặc định của hệ thống: SELECT CHARINDEX ( ‘TEST’, ‘This is a Test’) Hoặc chỉ rõ COLLATE SELECT CHARINDEX ( ‘TEST’, ‘This is a Test’ COLLATE Latin1_General_CI_AS); Kết quả là 11 Bài viết này là một phần trong Series “Học SQL miễn phí cùng chuyên gia”. Bạn hãy vào click vào link để xem toàn bộ Series bài viết, dễ dàng làm chủ SQL cùng chúng tôi nhé. Cảm ơn bạn đã đọc hết bài viết này. Đây là bài viết tâm huyết từ đội ngũ hoctinonline.edu.vn, nếu bạn cảm thấy hữu ích, hãy like và share bài viết này để đội ngũ hoctinonline.edu.vn có thêm động lực viết bài nhé 😊 Trân trọng cảm ơn bạn |