有张表a,有二个字段分别是b varchar(10) ;c varchar(7) 怎么在c字段里更新流水号(一共要7位,开头二位是jy后加流水号)
数据如下:
b c
苹果 0
橡胶 0
桃子 0
......现在我要的是下面的结果 b c
苹果 jy00001
橡胶 jy00002
桃子 jy00003
......
数据如下:
b c
苹果 0
橡胶 0
桃子 0
......现在我要的是下面的结果 b c
苹果 jy00001
橡胶 jy00002
桃子 jy00003
......
(
b NVARCHAR(10),
c VARCHAR(10)
)
INSERT #temp
SELECT N'苹果', 0 UNION ALL
SELECT N'橡胶', 0 UNION ALL
SELECT N'桃子', 0
GO
--SQL:
SELECT
b,
c = 'jy' + RIGHT('00000'+RTRIM(ROW_NUMBER() OVER(ORDER BY GETDATE())), 5)
FROM #temp
/*
b c
苹果 jy00001
橡胶 jy00002
桃子 jy00003
*/
--SQL:
;WITH cte AS
(
SELECT
b,
c,
new_c = 'jy' + RIGHT('00000'+RTRIM(ROW_NUMBER() OVER(ORDER BY GETDATE())), 5)
FROM #temp
)
UPDATE cte
SET c = new_c
----SQL2000
create table #Tmp
(b varchar(20),c varchar(10))insert into #Tmp
SELECT '苹果', 0 UNION ALL
SELECT '橡胶', 0 UNION ALL
SELECT '桃子', 0select b,identity(int,1,1) as item
into #Tmp1
from #Tmpupdate t1
set t1.c='jy'+Right('00000'+convert(varchar,item),5)
from #Tmp t1,
#Tmp1 t2
where t1.b=t2.b
--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(8)
AS
BEGIN
RETURN(SELECT 'BH'+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK))
END
GO--在表中应用函数
CREATE TABLE tb(
BH char(8) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)--插入资料
BEGIN TRAN
INSERT tb(col) VALUES(1)
INSERT tb(col) VALUES(2)
INSERT tb(col) VALUES(3)
DELETE tb WHERE col=3
INSERT tb(col) VALUES(4)
INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)
COMMIT TRAN--显示结果
SELECT * FROM tb
/*--结果
BH col
---------------- -----------
BH000001 1
BH000002 2
BH000003 4
BH000004 14
--*/
create table t1
(
name varchar(20),
id varchar(10)
)
insert into t1
select '苹果', 0 union all
select '橡胶', 0 union all
select '桃子', 0
select * from t1declare @a int=0
update t1
set id='jy'+RIGHT('00000'+CONVERT(varchar,@a),5),@a=@a+1
set @a=0
update t1
set id='jy'+RIGHT('00000'+CONVERT(varchar,@a),5),@a=@a+1