zoukankan      html  css  js  c++  java
  • sqlserver 分割字符串和调用

    传入某种规则拼接字符串获得数组(表)

    /*
    功能说明:传入字符串跟分割符('''SGHE00000003'',''SGHE00000004'',''SGHE00000005'''),返回一个Table
    */
    ALTER FUNCTION [dbo].[fnSys_SplitString]
    (
    ---字符串分割
    @Str VARCHAR(MAX), --传入的字符串
    @SeprateStr VARCHAR(10)--分隔符
    )
    RETURNS @temp TABLE(Code VARCHAR(100)) --返回一个Table
    AS
    BEGIN
    DECLARE @i INT
    SET @Str=REPLACE(@str,'''','')
    SET @Str =RTRIM(LTRIM(@Str ))
    SET @i=CHARINDEX(@SeprateStr,@Str )
    WHILE @i>=1
    BEGIN
    INSERT @temp VALUES(LEFT(@Str ,@i-1))
    SET @Str =SUBSTRING(@Str ,@i+1,LEN(@Str )-@i)
    SET @i=CHARINDEX(@SeprateStr,@Str )
    END
    IF @Str <>''
    INSERT @temp VALUES(@Str )
    RETURN
    END

    使用此函数拓展方法调用

    CREATE PROC WriteUnionIDByBatch
    @UnionIDs VARCHAR(MAX),@OpenIDs VARCHAR(MAX),@CompanyID VARCHAR(50),@AccountID VARCHAR(50)
    AS
    BEGIN

    DECLARE @unionID VARCHAR(50),@openid VARCHAR(50)
    CREATE TABLE #OpenIDTable
    (
    openid VARCHAR(50),
    unionid VARCHAR(50)
    )
    INSERT #OpenIDTable
    SELECT oldopenid,newopenid FROM dbo.[fnSys_SplitString_ChangeOpenID](@OpenIDs,@UnionIDs,',')
    DECLARE mycursor CURSOR FOR
    SELECT openid,unionid FROM #OpenIDTable
    OPEN mycursor
    FETCH NEXT FROM mycursor INTO @openid,@unionID
    WHILE @@FETCH_STATUS = 0
    BEGIN
    IF(ISNULL(@unionID,''))>''
    BEGIN
    UPDATE dbo.EWMS_Web_Member SET UnionID =@unionID WHERE CompanyID = @CompanyID AND AccountID = @AccountID
    END
    FETCH NEXT FROM mycursor INTO @openid,@unionID
    END
    CLOSE mycursor
    DEALLOCATE mycursor

    END

  • 相关阅读:
    C++头文件保护符和变量的声明定义
    ReactNavtive框架教程(2)
    扩展方法使用
    华为0基础——(练习用)挑7
    HTTP Status 500
    屏蔽DataGridView控件DataError 事件提示的异常信息
    POJ 3630 Phone List Trie题解
    【学习总结】数学-向量叉积
    9.1-9.30推荐文章汇总
    Autolayout环境设置任意个数相等间距排列的按钮的方法
  • 原文地址:https://www.cnblogs.com/wangdrama/p/9706623.html
Copyright © 2011-2022 走看看