zoukankan      html  css  js  c++  java
  • SQL 字符串转成临时表

    CREATE FUNCTION Split(@Text NVARCHAR(4000),@Sign NVARCHAR(4000))
    RETURNS @tempTable TABLE(id INT IDENTITY(1,1) PRIMARY KEY,[VALUE] NVARCHAR(4000))
    AS
    BEGIN
    DECLARE @StartIndex INT --开始查找的位置
    DECLARE @FindIndex INT --找到的位置
    DECLARE @Content VARCHAR(4000) --找到的值
    --初始化一些变量
    SET @StartIndex = 1 --T-SQL中字符串的查找位置是从1开始的
    SET @FindIndex=0

    --开始循环查找字符串逗号
    WHILE(@StartIndex <= LEN(@Text))
    BEGIN
    --查找字符串函数 CHARINDEX 第一个参数是要找的字符串
    -- 第二个参数是在哪里查找这个字符串
    -- 第三个参数是开始查找的位置
    --返回值是找到字符串的位置
    SELECT @FindIndex = CHARINDEX(@Sign,@Text,@StartIndex)
    --判断有没找到 没找到返回0
    IF(@FindIndex =0 OR @FindIndex IS NULL)
    BEGIN
    --如果没有找到者表示找完了
    SET @FindIndex = LEN(@Text)+1
    END
    --截取字符串函数 SUBSTRING 第一个参数是要截取的字符串
    -- 第二个参数是开始的位置
    -- 第三个参数是截取的长度
    --@FindIndex-@StartIndex 表示找的的位置-开始找的位置=要截取的长度
    --LTRIM 和 RTRIM 是去除字符串左边和右边的空格函数
    SET @Content = LTRIM(RTRIM(SUBSTRING(@Text,@StartIndex,@FindIndex-@StartIndex)))
    --初始化下次查找的位置
    SET @StartIndex = @FindIndex+1
    --把找的的值插入到要返回的Table类型中
    INSERT INTO @tempTable ([VALUE]) VALUES (@Content)
    END
    RETURN
    END

    SELECT * FROM dbo.Split(replace('''JB0051654'',''JB0331768'',''JB0011698''','''',''),',')

  • 相关阅读:
    JQuery 日历控件
    恢复xp_cmdshell SQL Server阻止了对组件 'xp_cmdshell' 的过程'sys.xp_cmdshell' 启用
    XML基础总结
    09.09.16总结
    草根
    设计模式学习总结
    检索 COM 类工厂中 CLSID 为{0002450000000000C000000000000046} 的组件时失败,原因是出现以下错误: 80070005。
    09.09.22总结
    Singleton 单态模式
    【Tomcat源码学习】5.请求处理
  • 原文地址:https://www.cnblogs.com/linjincheng/p/12671941.html
Copyright © 2011-2022 走看看