zoukankan      html  css  js  c++  java
  • sql Split函数(WHERE RouterID IN (SELECT Item FROM dbo.Split(@routerIds,',')))


    CREATE FUNCTION [dbo].[Split]
    (
    @origStr VARCHAR(8000) , --待拆分的字符串
    @markStr VARCHAR(100)
    ) --拆分标记,如','
    RETURNS @splittable TABLE
    (
    id INT NOT NULL , --编号ID
    item INT NOT NULL --拆分后的字符串
    )
    AS
    BEGIN
    DECLARE @strlen INT ,
    @postion INT ,
    @start INT ,
    @sublen INT ,
    @TEMPstr VARCHAR(200) ,
    @TEMPid INT
    SELECT @strlen = LEN(@origStr) ,
    @start = 1 ,
    @sublen = 0 ,
    @postion = 1 ,
    @TEMPstr = '' ,
    @TEMPid = 0

    IF ( RIGHT(@origStr, 1) <> @markStr )
    BEGIN
    SET @origStr = @origStr + @markStr
    END
    WHILE ( ( @postion <= @strlen )
    AND ( @postion != 0 )
    )
    BEGIN
    IF ( CHARINDEX(@markStr, @origStr, @postion) != 0 )
    BEGIN
    SET @sublen = CHARINDEX(@markStr, @origStr, @postion)
    - @postion ;
    END
    ELSE
    BEGIN
    SET @sublen = @strlen - @postion + 1 ;
    END

    IF ( @postion <= @strlen )
    BEGIN
    SET @TEMPid = @TEMPid + 1 ;
    SET @TEMPstr = SUBSTRING(@origStr, @postion, @sublen) ;
    INSERT INTO @splittable
    ( id, item )
    VALUES ( @TEMPid, @TEMPstr )
    IF ( CHARINDEX(@markStr, @origStr, @postion) != 0 )
    BEGIN
    SET @postion = CHARINDEX(@markStr, @origStr,
    @postion) + 1
    END
    ELSE
    BEGIN
    SET @postion = @postion + 1
    END
    END
    END
    RETURN
    END

  • 相关阅读:
    南阳oj 82 迷宫寻宝(一)
    杭电 oj 1016 Prime Ring Problem
    杭电 oj 3350 #define is unsafe
    南阳oj 366 全排列 D的小L
    南阳oj 32 组合数
    部分和问题 南阳oj 1058
    HNUSTOJ 1516:Loky的烦恼
    HDU-1874 畅通工程续
    T-聊天止于呵呵
    P-残缺的棋盘
  • 原文地址:https://www.cnblogs.com/q101301/p/4206061.html
Copyright © 2011-2022 走看看