基本上,我想在SQL中增加一个varchar,其值为“ABC001”。
我有一个代码,它将一个添加到一个int,但我不知道如何使它适用于varchar:
SELECT
NXT_NO
FROM
TABLE
UPDATE
TABLE
SET
NXT_NO = NXT_NO + 1
如果NXT_NO是varchar,是否有一种简单的增量方法?
我想:
ABC001 ABC002 ABC003
和
还需要使用:
001,A0001,AB00001
答案 0 :(得分:3)
嗯,你可以这样做:
update table
set nxt_no = left(next_no, 3) +
right('0000000' + cast(substring(next_no, 4, 100)+1 as varchar(255)), 4)
我认为有点蛮力。
顺便说一下,您可以使用标识列来自动增加ID。如果您想在前面添加固定前缀,则可以使用计算列。或者采用Bohemian的建议并将前缀和数字存储在不同的列中。
答案 1 :(得分:2)
update
[table]
set [nxt_no] = case when PATINDEX('%[0-9]%', [nxt_no]) > 0 then
left([nxt_no], PATINDEX('%[0-9]%', [nxt_no])-1) -- Text part
+ -- concat
right( REPLICATE('0', LEN([nxt_no]) - PATINDEX('%[0-9]%', [nxt_no])+1) + convert( varchar, convert(int, right([nxt_no], LEN([nxt_no]) - PATINDEX('%[0-9]%', [nxt_no])+1))+1), LEN([nxt_no]) - PATINDEX('%[0-9]%', [nxt_no])+1)
else
[nxt_no] end