SQL server 一个字段为yymmdd+3位序号 修改为yymm加4位序号的方法

发布于:2025-07-02 ⋅ 阅读:(17) ⋅ 点赞:(0)

在 SQL Server 中,如果你想要修改一个字段的格式,使其从原来的 yymmdd+3位序号 改为 yymm+4位序号,你可以使用 UPDATE 语句结合 CONVERT 或 FORMAT 函数来实现这个目的。这里有两种常见的场景:

场景1:如果原始数据存储为字符串格式

假设你有一个表 your_table,其中有一个字段 your_column 存储的是 yymmdd+3位序号 的格式,例如 230415001

你可以使用以下 SQL 语句来更新这个字段:

UPDATE your_table
SET your_column = LEFT(your_column, 6) + RIGHT('000' + CAST(RIGHT(your_column, 3) AS INT + 1 AS VARCHAR), 4)

这里,LEFT(your_column, 6) 获取原始字段的前6个字符(即 yymm),RIGHT(your_column, 3) 获取原始字段的后3个字符(即原来的序号部分)。然后,我们将序号部分转换为整数并加1,再通过 RIGHT('000' + CAST(... AS VARCHAR), 4) 确保序号始终是4位数字(通过在前面补零)。

场景2:如果原始数据存储为日期类型或可以直接提取年月日

如果你的表中有一个日期类型的字段,你想从这个日期中提取年月(yymm),然后添加一个序号,你可以先将日期转换为字符串,然后进行相应的处理。例如,如果你有一个日期字段 date_column

UPDATE your_table
SET your_column = RIGHT('00' + CAST(MONTH(date_column) AS VARCHAR), 2) + RIGHT('00' + CAST(YEAR(date_column) % 100 AS VARCHAR), 2) + RIGHT('000' + CAST(ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS VARCHAR), 4)

这里,MONTH(date_column) 和 YEAR(date_column) % 100 分别获取月份和年份的最后两位(即 mm 和 yy),然后通过 RIGHT('00' + CAST(... AS VARCHAR), 2) 来确保月份和年份都是两位数。最后,使用 ROW_NUMBER() 来生成一个序号,并通过 RIGHT('000' + CAST(... AS VARCHAR), 4) 来确保序号是4位数。

注意:在上面的例子中,ROW_NUMBER() 会为每一行生成一个唯一的序号。如果你需要基于特定列的排序来生成序号,可以调整 ORDER BY 子句中的条件。例如,如果你想基于某个特定的列(如 id_column)来生成序号,可以修改为:

UPDATE your_table
SET your_column = RIGHT('00' + CAST(MONTH(date_column) AS VARCHAR), 2) + RIGHT('00' + CAST(YEAR(date_column) % 100 AS VARCHAR), 2) + RIGHT('000' + CAST(ROW_NUMBER() OVER (ORDER BY id_column) AS VARCHAR), 4)

这样,序号就会按照 id_column 的值进行排序生成。


网站公告

今日签到

点亮在社区的每一天
去签到