分割字符串

在项目中有遇到这样的问题,就是查询的输入字符串是否包含一个规定格式字符串中。
比如说:查询 1002 是否包含在 '1001,1002,1003' 中。
可以通过很多种方式实现。我这里使用函数实现。如下:


[code="sql"]set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author:       
-- Create date:
-- Description:   
-- =============================================
ALTER FUNCTION [dbo].[IsAllIn]
(
@STR1 VARCHAR(500),    ------主字符串(规定格式,如:'1002,1003,1005')
@STR2 VARCHAR(500),    ------子串(如:1002)
@CHAR VARCHAR(10)    ------分割符(如:',')
)
RETURNS INT
AS
BEGIN

    DECLARE @C1 VARCHAR(50)
    DECLARE @ReturnValue INT
    SET @ReturnValue=1
    WHILE(@ReturnValue=1)
    BEGIN
        IF(LEN(@STR2)=0 OR @STR2 IS NULL)
        BEGIN
            BREAK
        END

        SELECT @C1=CASE WHEN CHARINDEX(@CHAR,@STR2,1)-1>=0 THEN SUBSTRING(@STR2,1,CHARINDEX(@CHAR,@STR2,1)-1) ELSE @STR2 END
        IF(@CHAR+@STR1+@CHAR NOT LIKE '%'+@CHAR+@C1+@CHAR+'%')
        BEGIN
            SET @ReturnValue=-1
        END
        SELECT @STR2=CASE WHEN CHARINDEX(@CHAR,@STR2,1)=0 THEN ''
                        WHEN LEN(@STR2)-CHARINDEX(@CHAR,@STR2,1)-LEN(@CHAR)+1>=0
                            THEN SUBSTRING(@STR2,CHARINDEX(@CHAR,@STR2,1)+LEN(@CHAR),LEN(@STR2)-CHARINDEX(@CHAR,@STR2,1)-LEN(@CHAR)+1)
                    ELSE NULL END
    END
    RETURN @ReturnValue
END

执行:SELECT [dbo].[IsAllIn]('1002,1008,1003','1002',',') AS RESULT


返回-1说明主字符串不包含字串。 返回1说明主字符串包含字串。
这样程序中通过返回标识即可判断。


原文发表: 西安seo

你可能感兴趣的:(html,Go)