sql-server - SQL Server 将列中的所有数字递增 1

标签 sql-server

我现有的列包含如下行

`33583164+32702184+45119472+33583164+`33583164+32702184+45119472+33583164+
`6962818+11703027+22894651+34160658+4921875+6302341+47975195+4921875+32702184+21408615+`

我想将这些数字中的每一个递增 1,以便第 1 行变为

44694264+43813295+56230583+44694275+

最佳答案

你可以为此使用 TRANSLATE

SELECT TRANSLATE('33583164+32702184+45119472+33583164+33583164+32702184+45119472+33583164+ 6962818+11703027+22894651+34160658+4921875+6302341+47975195+4921875+32702184+21408615+', 
       '1234567890',
       '2345678901')

在 2017 年之前的版本中,您可以使用嵌套的 REPLACE。这需要进行排序,以便它不会替换在前面步骤中作为替换字符的字符,因此使用中间字符,例如 ~ 以便它可以区分 1将由初始替换与原始字符串中的 1 创建(当然,请确保您选择一个您满意的中间字符,该字符永远不会出现在原始字符串中)。

SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('0123456789'
, '0', '~')
, '9', '0')
, '8', '9')
, '7', '8')
, '6', '7')
, '5', '6')
, '4', '5')
, '3', '4')
, '2', '3')
, '1', '2')
, '~', '1')

关于sql-server - SQL Server 将列中的所有数字递增 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61820801/

相关文章:

sql-server - 在SSIS中,如何查找值的ID,如果不匹配,则插入值并返回ID

sql-server - 查找 SQL Server 2005 Management Studio 的注册表

sql - 使用内连接更新记录

sql - 生成 list 编号

sql - 将 DATEPART 存储在表中

sql - 当有 6 个月的间隙时,抓取所有内容,如果没有 6 个月的间隙,则抓取所有 sql

sql-server - 如何在 SQL Server 2012+ 上使用 JdbcTemplate 获取生成的序列 ID

mysql - 将2行合并为一行,使用2列MYSQL

sql-server - SSIS 作业调度程序失败,但在 BIDS 和 MSDB 集成服务中运行良好

c# - SQL表中行的增量值