Cấp bậc tác giả:

DATABASE

Hướng dẫn tách chuỗi sử dụng mệnh đề IN trong SQL

Được viết bởi webmaster ngày 01/11/2014 lúc 07:37 PM
Như chúng ta biết các truy vấn SQL là Dynamic và Nondynamic. Ví dụ truy vấn Non dynamic. Chuỗi spliting thành chuỗi phân cách sử dụng chức năng của SQL.
  • 0
  • 10017

Hướng dẫn tách chuỗi sử dụng mệnh đề IN trong SQL

@string nvarchar(max),
@splitedstring nvarchar(max)
set @string='word1,word2 '
Kết quả: @splitedstring ='word1','word2'
Tạo function
CREATE FUNCTION [dbo].[StrinToStringList]
( @str nVARCHAR (MAX),
@delimeter nvarchar(2))
RETURNS
@result TABLE (
[ID] nvarchar(max) NULL)
AS
BEGIN

DECLARE @x XML
SET @x = '<t>' + REPLACE(@str, @delimeter, '</t><t>') + '</t>'

INSERT INTO @result
SELECT DISTINCT x.i.value('.', 'nvarchar(max)') AS token
FROM @x.nodes('//t') x(i)
ORDER BY 1

RETURN
END
Tạo bảng với dữ liệu như sau
 
Nếu sử dụng thủ tục dưới
create procedure CompanyFilter
(
@string nvarchar(max)='aaa,bbb'
)
as
begin

select * from table where names in(@string)

end
Nó sẽ thực thi như sau
 
 
Trong stored procedure tham số "@string" là chuỗi duy nhất truy vấn không có tên với "aaa, bbb" lý do tại sao bảng trả về không có gì.
Vì vậy, tái sửa đổi stored procedure như dưới đây
create procedure CompanyFilter
(
@string nvachar(max)='aaa,bbb
)
as
begin
Select * from table where names in (select id from dbo.StrinToStringList(@string,','))
end
Kết quả
 

Nguồn bài viết: DOTNET.VN

BÌNH LUẬN BÀI VIẾT

Bài viết mới nhất

LIKE BOX

Bài viết được xem nhiều nhất

HỌC HTML