原始table:
所属路线 路段编号 起点桩号 迄点桩号
C084420222 001 0 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322C085420222 001 0 1.394C086420222 001 0 1.143
C086420222 002 1.143 1.243C087420222 001 0 1.06
C087420222 002 1.06 1.593
C087420222 003 1.593 2.01
C087420222 004 2.01 2.555如何实现将任意一条路线的路段编号翻转过来其他字段的值不变效果如下:所属路线 路段编号 起点桩号 迄点桩号
C084420222 001 0 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322C085420222 001 0 1.394C086420222 001 0 1.143
C086420222 002 1.143 1.243C087420222 004 0 1.06
C087420222 003 1.06 1.593
C087420222 002 1.593 2.01
C087420222 001 2.01 2.555
所属路线 路段编号 起点桩号 迄点桩号
C084420222 001 0 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322C085420222 001 0 1.394C086420222 001 0 1.143
C086420222 002 1.143 1.243C087420222 001 0 1.06
C087420222 002 1.06 1.593
C087420222 003 1.593 2.01
C087420222 004 2.01 2.555如何实现将任意一条路线的路段编号翻转过来其他字段的值不变效果如下:所属路线 路段编号 起点桩号 迄点桩号
C084420222 001 0 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322C085420222 001 0 1.394C086420222 001 0 1.143
C086420222 002 1.143 1.243C087420222 004 0 1.06
C087420222 003 1.06 1.593
C087420222 002 1.593 2.01
C087420222 001 2.01 2.555
返回字符表达式的反转。
----楼主的数据看不出发生了什么改变。。
所属路线 路段编号 起点桩号 迄点桩号
C084420222 001 0 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322C085420222 001 0 1.394C086420222 001 0 1.143
C086420222 002 1.143 1.243C087420222 001 0 1.06
C087420222 002 1.06 1.593
C087420222 003 1.593 2.01
C087420222 004 2.01 2.555如何实现将任意一条路线的路段编号翻转过来其他字段的值不变效果如下:所属路线 路段编号 起点桩号 迄点桩号
C084420222 001 0 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322C085420222 001 0 1.394C086420222 001 0 1.143
C086420222 002 1.143 1.243C087420222 004 0 1.06
C087420222 003 1.06 1.593
C087420222 002 1.593 2.01
C087420222 001 2.01 2.555
--如果路段编号满足以下两个条件:(1)固定为3位;(2)编号从001连续编号
--可以使用如下SQL完成create table tb ( 所属路线 varchar (100) null , 路段编号 varchar (100) null , 起点桩号 varchar (100) null , 迄点桩号 varchar (100) null )
go
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c084420222' , '001' , '0' , '5.251' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c084420222' , '002' , '5.251' , '7.085' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c084420222' , '003' , '7.085' , '9.322' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c085420222' , '001' , '0' , '1.394' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c086420222' , '001' , '0' , '1.143' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c086420222' , '002' , '1.143' , '1.243' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c087420222' , '001' , '0' , '1.06' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c087420222' , '002' , '1.06' , '1.593' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c087420222' , '003' , '1.593' , '2.01' )
insert tb ( 所属路线 , 路段编号 , 起点桩号 , 迄点桩号 ) values ( 'c087420222' , '004' , '2.01' , '2.555' )
select * from tbdeclare @所属路线 varchar(100),@maxVarchar varchar(100),@maxInt int
set @所属路线='c087420222'set @maxVarchar=(select max(路段编号) from tb where 所属路线=@所属路线)
set @maxInt=cast(@maxVarchar as int)+1
--select @maxintupdate tb set 路段编号=right('000' + cast(@maxInt-cast(路段编号 as int) as varchar(10)),3) where 所属路线=@所属路线select * from tbdrop table tb
--建立測試環境
Create Table Test(
所属路线 Varchar(10),
路段编号 Varchar(3),
起点桩号 Numeric(10,3),
迄点桩号 Numeric(10,3))
--插入數據
Insert Test Select
'C084420222', '001', 0, 5.251
Union All Select
'C084420222', '002', 5.251, 7.085
Union All Select
'C084420222', '003', 7.085, 9.322
Union All Select
'C085420222', '001', 0, 1.394
Union All Select
'C086420222', '001', 0, 1.143
Union All Select
'C086420222', '002', 1.143, 1.243
Union All Select
'C087420222', '001', 0, 1.06
Union All Select
'C087420222', '002', 1.06, 1.593
Union All Select
'C087420222', '003', 1.593, 2.01
Union All Select
'C087420222', '004', 2.01, 2.555
GO
--建立存儲過程
Create ProceDure ReverseLine
(@Line Varchar(10))
As
Begin
Update Test Set 路段编号=Right('0000'+Rtrim((Select Max(路段编号)+1 from Test Where 所属路线=@Line)-路段编号),3) Where 所属路线=@Line
End
GO
--測試
Select * from Test
EXEC ReverseLine 'C087420222'
--EXEC ReverseLine 'C084420222'
Select * from Test
--刪除測試環境
Drop Table Test
Drop ProceDure ReverseLine
--結果
/*
所属路线 路段编号 起点桩号 迄点桩号
C084420222 001 .000 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322
C085420222 001 .000 1.394
C086420222 001 .000 1.143
C086420222 002 1.143 1.243
C087420222 001 .000 1.060
C087420222 002 1.060 1.593
C087420222 003 1.593 2.010
C087420222 004 2.010 2.555C084420222 001 .000 5.251
C084420222 002 5.251 7.085
C084420222 003 7.085 9.322
C085420222 001 .000 1.394
C086420222 001 .000 1.143
C086420222 002 1.143 1.243
C087420222 004 .000 1.060
C087420222 003 1.060 1.593
C087420222 002 1.593 2.010
C087420222 001 2.010 2.555*/