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''','''',''),',')

  • 相关阅读:
    每日日报2021 5/25
    每日日报2021 5/24
    Rust-Cargo是什么
    Rust学习-Intellij开发环境配置
    设计模式-命令模式
    918. Maximum Sum Circular Subarray
    不错的画类图工具-PlantUML
    Daily Coding Problem: Problem #793
    读懂UML类图
    1753. Maximum Score From Removing Stones
  • 原文地址:https://www.cnblogs.com/linjincheng/p/12671941.html
Copyright © 2011-2022 走看看