SQL 拼接字符串 使用IN查询方法

CREATE FUNCTION [dbo].[F_SUBSTRINGINTARRAY] 
(    
    @STR VARCHAR(1000), --字符串队列格式为:1,2,3,4
    @CHAR VARCHAR(10)   --截取字符串的符号:,
)
RETURNS @RESULT TABLE(ID INT)
AS
BEGIN

    DECLARE @INDEX INT   --声明截取符号的位置
    DECLARE @ORDERID INT --声明获取的INT编号
    
    --判断传递的字符串不能为空
    IF LEN(@STR) > 0     
    BEGIN
        --查询第一个符号,的位置
        SET @INDEX = CHARINDEX(@CHAR, @STR) 
        --循环截取字符串
        WHILE @INDEX > 0 
        BEGIN
            --截取第一个,位置的值
            SET @ORDERID = SUBSTRING(@STR, 1, @INDEX - 1)
            --截取@STR字符串第一个值,截取后变成 2,3,4
            SET @STR = SUBSTRING(@STR, @INDEX + 1, LEN(@STR) - @INDEX)
            --重新给@INDEX赋值
            SET @INDEX = CHARINDEX(@CHAR, @STR)
            --插入到返回的表格中
            INSERT INTO @RESULT(ID) VALUES(@ORDERID)
        END
        --判断是否截取到最后一个
        IF @INDEX = 0 AND LEN(@STR) > 0
        BEGIN
            --插入到返回的表格中
            INSERT INTO @RESULT(ID) VALUES(@STR)
        END
    END
RETURN    
END
/*
测试当前的函数
--第一种情况
SELECT * FROM [DBO].[F_SUBSTRINGINTARRAY]('1,2,3', ',')
--第二种情况
SELECT * FROM [DBO].[F_SUBSTRINGINTARRAY]('1', ',')
*/
GO

你可能感兴趣的:(SQL,SQL)