繁体   English   中英

如何在SQL中以前导零递增varchar

[英]how to increment a varchar with leading zeroes in sql

我有一个格式为'@ 0001'的varchar,我需要将该值加1,以使结果为@ 0002。这一直持续到@ 9999。

请建议

对于MySQL:

UPDATE my_table SET my_column =
    concat('@', lpad(to_number(substr(my_column, 2, 4)) + 1, 4, '0000'));

相同的想法,但另一个数据库具有不同的功能。

对于SQl Server,这将起作用,但是请注意,在值@ 9999的情况下,它将返回@ 0000。 如果要将tha移到五个字符,它将变得更加复杂。 如果某些数据点的@符号后面少于4个字符,则情况也会更加复杂。

create table #temp (id varchar(50))
insert into #temp (id) values ('@0001'), ('@0991'), ('@9999')

select id, '@'+right('0000' +cast(cast (Right(id, 4) as Int) + 1 as varchar(50)), 4) from #temp

这样做的潜在复杂性和处理数据问题的能力意味着,对于大量数据,这是您不希望做的事情,对于处理超过四个字符的值,则必须进行调整或变得更加复杂。如果第一个字符可能不同。 就个人而言,如果您需要做的不仅仅是one_tiem转换,我会发现最好将数据正确存储在其组成部分中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM