db2 使用varchar +递增int更新列

jhdbpxl9  于 2023-05-28  发布在  DB2
关注(0)|答案(1)|浏览(163)

我试图通过从同一个表中提供一个列表数据来更新表中的两列。下面是我想用来更新这两列的格式

LOGIN                         EMAIL 
-----                         -----
5717-9889-0001@xxxx.com       5717-9889-0001@xxxx.com
5717-9889-0002@xxxx.com       5717-9889-0002@xxxx.com
5717-9889-0003@xxxx.com       5717-9889-0003@xxxx.com

下面是我写了一半的问题。实际上我不确定这是正确的方式,因为我已经从另一个线程中引用了这个。显然这是不正确的。

DECLARE @IncrementValue1 INT
DECLARE @IncrementValue2 INT
SET @IncrementValue1 = 0001
SET @IncrementValue2 = 0001
UPDATE
    USERTEST 
SET
    LOGIN = '5717-9889-' + @IncrementValue1 + '@xxxx.com',
    EMAIL = '5717-9889-' + @IncrementValue2 + '@xxxx.com'
WHERE
    USERID IN ( SELECT
                    USERID 
                FROM
                    USERTEST 
                WHERE
                    LOGIN IN ('advw@12233318007262',
                    'caeqveewe',
                    'zxy@vdv',
                    'zstclair',
                    'zpasigna',
                    'zoe_tadvadv',
                    'zmadvadvadv',
                    'zadvadvadv',
                    'zielinsm@advadvadv.com',
                    'zhouxinhy',
                    'ZHEJIANG@BBAGGS',
                    'ZHE@avadvadv'))

谢谢你的帮助
期望的结果应该是这样的。我有大约200+ ID每个文件

LOGIN                         EMAIL 
-----                         -----
5717-9889-0001@xxxx.com       5717-9889-0001@xxxx.com
5717-9889-0002@xxxx.com       5717-9889-0002@xxxx.com
5717-9889-0003@xxxx.com       5717-9889-0003@xxxx.com
5717-9889-0004@xxxx.com       5717-9889-0004@xxxx.com
5717-9889-0005@xxxx.com       5717-9889-0005@xxxx.com
5717-9889-0006@xxxx.com       5717-9889-0006@xxxx.com
5717-9889-0007@xxxx.com       5717-9889-0007@xxxx.com
ws51t4hk

ws51t4hk1#

你可以使用row_number()来获取非法标识,并使用LPAD将前导零添加到这些整数中:
如果需要连接两个字符串,请使用||+是加法运算符)
如果你想从11开始,例如将10添加到row_number()LPAD(10 + row_number() over(), 4, '0' )

UPDATE USERTEST
SET
    LOGIN = '5717-9889-' || LPAD(row_number() over(), 4, '0' ) || '@xxxx.com',
    EMAIL = '5717-9889-' || LPAD(row_number() over(), 4, '0' ) || '@xxxx.com'
WHERE LOGIN IN ('advw@12233318007262',
                    'caeqveewe',
                    'zxy@vdv',
                    'zstclair',
                    'zpasigna',
                    'zoe_tadvadv',
                    'zmadvadvadv',
                    'zadvadvadv',
                    'zielinsm@advadvadv.com',
                    'zhouxinhy',
                    'ZHEJIANG@BBAGGS',
                    'ZHE@avadvadv');

Demo here

相关问题