在SQL中增加varchar

时间:2013-02-19 20:31:57

标签: sql sql-server

基本上,我想在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

2 个答案:

答案 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