美文网首页
sql 对某字段以_分隔符的 进行 不足补0 转行

sql 对某字段以_分隔符的 进行 不足补0 转行

作者: 吉凶以情迁 | 来源:发表于2024-11-12 09:09 被阅读0次
    -- 声明输入字符串和临时表
DECLARE @inputString NVARCHAR(MAX) = 'AD_1_D1_2_3_6fff3';
DECLARE @tempTable TABLE (PartNumber INT, PaddedPart NVARCHAR(10));
 
-- 初始化变量
DECLARE @start INT = 1;
DECLARE @end INT;
DECLARE @part NVARCHAR(MAX);
DECLARE @maxLength INT = 4; -- 假设每个部分要补足到4位
DECLARE @partNumber INT = 1; -- 用于跟踪部分编号
 
-- 使用 WHILE 循环来分割字符串
WHILE CHARINDEX('_', @inputString, @start) > 0
BEGIN
    SET @end = CHARINDEX('_', @inputString, @start);
    SET @part = SUBSTRING(@inputString, @start, @end - @start);
 
    -- 插入到临时表,并用0补足长度
    INSERT INTO @tempTable (PartNumber, PaddedPart)
    VALUES (@partNumber, RIGHT('0000' + @part, @maxLength));
 
    -- 更新部分编号和起始位置以继续下一次循环
    SET @partNumber = @partNumber + 1;
    SET @start = @end + 1;
END
 
-- 处理最后一个部分(没有下划线的部分)
IF @start <= LEN(@inputString)
BEGIN
    SET @part = SUBSTRING(@inputString, @start, LEN(@inputString) - @start + 1);
 
    -- 插入到临时表,并用0补足长度
    INSERT INTO @tempTable (PartNumber, PaddedPart)
    VALUES (@partNumber, RIGHT('0000' + @part, @maxLength));
END
 
-- 查询临时表以查看结果
SELECT * FROM @tempTable;
image.png

纯分割转行

CREATE FUNCTION [dbo].[SplitStringToRow]
(
    @str NVARCHAR(4000)
   ,@char NVARCHAR(10) = ','
)
--create by lozn
RETURNS @SplitStr TABLE
(
     ID int IDENTITY PRIMARY KEY
    ,Value nvarchar(2000)
)
AS
    BEGIN
        SET @str = @str + @char
        WHILE LEN(@str) > 0
            BEGIN
                INSERT @SplitStr
                SELECT  SUBSTRING(@str, 1, CHARINDEX(@char, @str) - 1)
                SELECT  @str = RIGHT(@str, LEN(@str) - CHARINDEX(@char, @str) - (LEN(@char) - 1))
            END   
        RETURN
    END

相关文章

  • MySQL 语句的规范

    关键字与函数名称全部大写. 数据库名称, 表名称, 字段名称等全部小写. SQL 语句必须以分隔符结尾. SQL ...

  • mysql常用函数及语句笔记

    mysql中group by分组后查询无数据补0 MySQL对sum()字段进行条件筛选:having 显示按日期...

  • Mysql 表字段长度

    整数类型 以上字段长度和所占多少存储空间无关,字段长度代表字段显示的宽度。字段宽度不足时,可以补0来展示达到设置长...

  • Linux 的 ‘sort’命令的14个有用的范例(一)

    Sort是用于对单个或多个文本文件内容进行排序的Linux程序。Sort命令以空格作为字段分隔符,将一行分割为多个...

  • awk

    字段和记录分隔符变量 变量描述FS输入字段分隔符,默认是空格OFS输出字段分隔符 默认也是空格RS输入行分隔符,默...

  • oracle 字段带分隔符列转多行

    将带分隔符的字段,转成多行数据,如图,JJLB行数据转成列 上面的sql只修改字段和表名就可以,别的不用处理

  • awk命令设置多个FS

    awk中FS代表输入字段分隔符,可以通过|设置多个不同的字段分隔符

  • Python学习:awk常用变量和函数

    1.内置变量表 属性说明$0当前记录(作为单个变量)n当前记录的第n个字段,字段间由FS分隔FS输入字段分隔符 默...

  • excel导入的必填字段

    对必填字段的sql参数使用trim()函数,如果参数为空则导入报错对非必填字段先使用empty()进行判断,非空时...

  • linux awk命令

    F(指定字段分隔符) 默认使用空格作为分隔符。 FS(字段分隔符) 默认是空格和制表符。1,$2 表示第一个字段,...

网友评论

      本文标题:sql 对某字段以_分隔符的 进行 不足补0 转行

      本文链接:https://www.haomeiwen.com/subject/wdlljjtx.html