Cách sử dụng hàm CharIndex trong SQL Server để xử lý, phân tích dữ liệu

Cach su dung ham CharIndex trong SQL Server de xu ly, phan tich du lieu
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. Đây là một hàm cực kỳ quan trọng trong SQL Server để giúp chúng ta xử lý, phân tích dữ liệu với các bài toán nghiệp vụ liên quan đến tách chuỗi dữ liệu.
Chia sẻ bài viết này
Share on facebook
Share on linkedin
Share on twitter
Share on email

Mục lục bài viết

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ụ 4: Thực hiện tìm kiếm phân biệt chữ hoa và chữ thường case-sensitive search

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ụ 5: Thực hiện tìm kiếm không phân biệt chữ hoa, chữ thường case-insensitive search

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 xử lý, phân tích dữ liệu cùng chuyên gia MasterMOS”. 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 để xử lý, phân tích dữ liệu lớn cùng chúng tôi nhé.

Câu hỏi dành cho chúng tôi
Chúng tôi sẽ liên hệ lại bạn trong thời gian sớm nhất
Các bài viết liên quan
Cach su dung ham CHAR trong SQL Server de xu ly, phan tich du lieu_MasterMOS_Education
Hàm trong SQL Server
Cách sử dụng hàm CHAR trong SQL Server để xử lý, phân tích dữ liệu

Hàm CHAR trong SQL Server được sử dụng để chuyển đổi một biểu thức số nguyên thành ký tự tương ứng theo bảng mã ASCII. Hàm CHAR được sử dụng ngược với hàm ASCII. Bạn hãy cùng tìm hiểu cách sử dụng hàm CHAR trong SQL Server để xử lý, phân tích dữ liệu trong bài viết này nhé.

Cach su dung ham COUNT trong SQL Server de xu ly, phan tich du lieu_MasterMOS_Education
Hàm trong SQL Server
Cách sử dụng hàm COUNT trong SQL Server để xử lý, phân tích dữ liệu

Hàm COUNT là một hàm rất quan trọng trong SQL Server để thực hiện các tính toán, xử lý, phân tích dữ liệu. Các tính toán thường gặp là đếm số lượng bản ghi theo ngày dữ liệu, đếm số lượng khách hàng theo ngày gia nhập, đếm số lượng giao dịch theo các chiều phân tích khác nhau. Hàm COUNT có một số cách thức sử dụng cần lưu ý, đặc biệt khi làm việc với dòng bị NULL. Các bạn hãy cùng MasterMOS Education tìm hiểu chi tiết trong bài viết sau đây.

Cach su dung ham SUM trong SQL Server de xu ly, phan tich du lieu_MasterMOS_Education
Hàm trong SQL Server
Cách sử dụng hàm SUM trong SQL Server để xử lý, phân tích dữ liệu

Hàm SUM trong SQL Server là hàm được sử dụng cực kỳ phổ biến để giúp chúng ta tính toán, tổng hợp dữ liệu. Hàm SUM thường được kết hợp với GROUP BY để có thể tính tổng số dư theo từng nhóm dữ liệu khác nhau. Hàm SUM cũng có thể đứng một mình để tính tổng dữ liệu của các bản ghi. Trong bài viết này, bạn hãy cùng MasterMOS Education tìm hiểu cách sử dụng hàm SUM nhé.