CREATE FUNCTION [dbo].[fn_Split](@text varchar(8000), @delimiter varchar(20) = ' ')
RETURNS @Strings TABLE
(
position int IDENTITY PRIMARY KEY,
value varchar(8000)
)
AS
BEGIN
DECLARE @index int
SET @index = -1
WHILE (LEN(@text) > 0)
BEGIN
SET @index = CHARINDEX(@delimiter , @text)
IF (@index = 0) AND (LEN(@text) > 0)
BEGIN
INSERT INTO @Strings VALUES (@text)
BREAK
END
IF (@index > 1)
BEGIN
INSERT INTO @Strings VALUES (LEFT(@text, @index - 1))
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
ELSE
SET @text = RIGHT(@text, (LEN(@text) - @index))
END
RETURN
END
โค้ดข้างต้นคือการสร้าง function สำหรับ Split ค่า String เพื่อให้สามารถใช้ใน IN Operation ในการ Query สำหรับ Stored Procedure ได้
การใช้งานกก็คือนำไปใส่ใน IN เท่านั้น ตัวอย่าง
CREATE PROCEDURE [dbo].[sp_TRANS]
@p_DateStart AS datetime,
@p_DateFinish As datetime,
@p_clstype as varchar(255)
AS
BEGIN
SELECT
item_name,
transaction_date
FROM tb_buy_item
WHERE transaction_date BETWEEN @p_DateStart and @p_DateFinish
AND item_type IN (select value from fn_Split(@p_clstype, ','))
ORDER BY T.TRANS_ID ASC
END
หวังว่าจะเป็นประโยชน์กับ Developer ทุกท่านครับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น