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.

HƯỚNG DẪN SỬ DỤNG HÀM CHARINDEX TRONG SQL SERVER

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.

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ố:

  • expressionToFind Chuỗi ký tự mà bạn muốn tìm kiếm. expressionToFind có giới hạn là 8000 ký tự
  • expressionToSearch Chuỗi ký tự để tìm kiếm , có thể là một chuỗi chữ, biểu thức hoặc cột
  • start_location Một số nguyên dạng integer hoặc bigint chỉ định vị trí trong chuỗi nơi bắt đầu việc tìm kiếm. Nếu start_location không được chỉ định, hoặc có giá trị âm, hoặc số 0, việc tìm kiếm sẽ bắt đầu từ ký tự đầu tiên của chuỗi expressionToSearch.

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 CHARINDEX

Ví dụ 1: Trả về vị trí bắt đầu của một chuỗi

Ví 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 định

Ví 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ại

Ví 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ụ 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ụ 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