NEWS

[SQLSERVER] Hướng dẫn tìm kiếm nâng cao trên sql

[SQLSERVER] Hướng dẫn tìm kiếm nâng cao trên sql
Đăng bởi: Thảo Meo - Lượt xem: 3523 10:37:55, 04/08/2022C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình chia sẻ các bạn bài toán tìm kiếm nâng cao trên Sqlserver, mình thấy bài viết này rất hay hy vọng sẽ giúp được cho các bạn nào cần.

[SQLSERVER] Tìm kiếm nâng cao trên sql

Mình có hình ảnh bảng nhân viên như sau:

sqlserver_search_advance

Ở hình trên, các bạn thấy mình có một bảng danh sách tên các nhân viên đều nằm trong 1 column và được cách nhau bởi dấu (,)

Bài toán tìm kiếm ở đây là khi bạn truyền vào từ khóa: 

Ví dụ: "Marry,Petter" => nó sẽ tìm và trả về cho chúng ta kết quả chứa tên 2 bạn này ra.

Bắt đầu thực hiện:

Bước 1: Các bạn tạo cho mình bảng Table tbl_person

USE [Test]
GO

/****** Object:  Table [dbo].[tbl_person]    Script Date: 04/08/2022 10:33:59 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tbl_person](
	[name] [nvarchar](4000) NULL
) ON [PRIMARY]
GO

Bước 2: Insert dữ liệu mẫu data vào để Test

INSERT INTO tbl_person ([name])
VALUES
( N'Alex,Marry,Peter,Paul,Tom' ), 
( N'Tom,Susan,Peter' ), 
( N'Peter,Alex' ), 
( N'Marry,Paul,Tom' ), 
( N'Paul,Tom' ), 
( N'Susan,Alex,Tom' ), 
( N'Alex,Peter,Paul' ), 
( N'Paul' ), 
( N'Tom,Marry' ), 
( N'Paul,Marry,Tom,Ronaldo' ), 
( N'Ronaldo,Messi,Kaka' ), 
( N'Marry,Ronaldo,Tom' ), 
( N'Peter,Messi,Marry' )

Bước 3: Truy vấn tìm kiếm dữ liệu

SELECT *
FROM [tbl_person]
WHERE NOT EXISTS
(
    SELECT 0
    FROM STRING_SPLIT('marry,peter', ',')
    WHERE CHARINDEX(CONCAT(',', value, ','), CONCAT(',', name, ',')) = 0
);

Thanks for watching!

Cảm ơn tác giả Trịnh Quốc Khang đã chia sẻ bài viết này !!!

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[SQLSERVER] Hướng dẫn tìm kiếm nâng cao trên sql
Đăng bởi: Thảo Meo - Lượt xem: 3523 10:37:55, 04/08/2022C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.