基本上,我想在 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
基本上,我想在 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
好吧,你可以这样做:
update table
set nxt_no = left(next_no, 3) +
right('0000000' + cast(substring(next_no, 4, 100)+1 as varchar(255)), 4)
在我看来有点蛮力。
顺便说一句,您可以使用标识列来自动增加 id。如果您想在前面放置一个固定前缀,您可以使用计算列。或者采纳 Bohemian 的建议,将前缀和数字存储在不同的列中。
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