我查询了更新我的值的版本,这里是代码
DECLARE @inParam AS VARCHAR(50) = '80003689_CST_20120118'
DECLARE @file_extension varchar(50)='.xlsx'
DECLARE @lastVer AS VARCHAR(50)
DECLARE @nextVer AS INT
DECLARE @combine AS VARCHAR(50)
SELECT @lastVer = MAX([File_Name])
FROM dbo.Uploaded_File
WHERE [File_Name] LIKE @inParam+'%'
SELECT @nextVer = CAST(SUBSTRING(@lastVer,LEN(@inParam) + 6, 1) AS INT) + 1
SELECT @combine = @inParam + '(' + CONVERT(VARCHAR, @nextVer) + ')' + @file_extension
SELECT @lastVer, @nextVer, @combine
问题是当值80003689_CST_20120118(1)
时,它没有更新版本,结果我有80003689_CST_20120118(1)(1)
...
但我希望结果变为80003689_CST_20120118(2)
。
所以,如果我有相同的价值,它将成为:
80003689_CST_20120118
80003689_CST_20120118(1)
80003689_CST_20120118(2)
等
@Dimitri回答.. 但我不能标记他的回答..它的givin错误页面在我身上...... 谢谢迪米特里
答案 0 :(得分:4)
我认为它现在有效:
DECLARE @inParam AS VARCHAR(50) = '80003689_CST_20120118'
declare @file_extension varchar(50)='.xlsx'
DECLARE @lastVer AS VARCHAR(50)
DECLARE @nextVer AS INT
DECLARE @combine AS VARCHAR(50)
SELECT @lastVer = MAX(CAST(SUBSTRING([File_Name], LEN(@inParam)+2, LEN([File_Name]) - LEN(@inParam) - 2) AS INT))
FROM dbo.Uploaded_File
WHERE [File_Name] LIKE @inParam+'(%)'
SELECT @nextVer = ISNULL(@lastVer, 0) + 1
SELECT @combine = @inParam + '(' + CONVERT(VARCHAR, @nextVer) + ')' + @file_extension
SELECT @lastVer,@nextVer,@combine
答案 1 :(得分:1)
这是我的测试片段(它不需要db表)。你能更新它来重现错误吗?
DECLARE @inParam AS VARCHAR(50) = '80003689_CST_20120118'
declare @file_extension varchar(50)='.xlsx'
DECLARE @lastVer AS VARCHAR(50)
DECLARE @nextVer AS INT
DECLARE @combine AS VARCHAR(50)
create table #Uploaded_File ( [File_Name] varchar(max) )
insert into #Uploaded_File values( @inParam + '(3)' )
insert into #Uploaded_File values( @inParam + '(22)' )
insert into #Uploaded_File values( @inParam + '(1)' )
insert into #Uploaded_File values( @inParam + '(50)' )
SELECT @lastVer = MAX(CAST(SUBSTRING([File_Name], LEN(@inParam)+2, LEN([File_Name]) - LEN(@inParam) - 2) AS INT))
FROM #Uploaded_File
WHERE [File_Name] LIKE @inParam+'(%)'
SELECT @nextVer = ISNULL(@lastVer, 0) + 1
SELECT @combine = @inParam + '(' + CONVERT(VARCHAR, @nextVer) + ')' + @file_extension
SELECT @lastVer,@nextVer,@combine
drop table #Uploaded_File