0
ALTER PROCEDURE [dbo].[AmendInsertDuplicateFields] (@ReportID varchar(50))
AS
BEGIN
    DECLARE @NewReportID VARCHAR(50)
    SET @NewReportID = NEWID()

    INSERT INTO [MVCOmar].[dbo].[PrideMVCCollisionBegin]
           ([ReportID], [LocalIncidentNum], [version], [MTOReferenceNo], [Submitted]) 
       SELECT 
          @NewReportID, [LocalIncidentNum], [version], [MTOReferenceNo], [Submitted] 
       FROM 
          [MVCOmar].[dbo].[PrideMVCCollisionBegin] 
       WHERE 
          [ReportID] = @ReportID;

我想获取我得到的结果version,将它从字符串转换为 int 类型,加一,转换回字符串,然后存储它。

我承认该版本应该是int而不是字符串类型。我也承认,实现这一点的更好方法是将属性设置为递增 1。

我暂时不能做这两个选项,因为我现在的优先级不同,我的时间有限,代码很旧,并且由许多编码习惯不好的人编写。

4

3 回答 3

4

不需要转换,运行这个,会有隐式转换

SELECT '1' + 1

返回 2

在你的情况下,你可以做[version] + 1

于 2012-06-27T18:20:09.180 回答
2

您可以使用CONVERT 函数在 SELECT 语句中内联执行此操作:

INSERT INTO [MVCOmar].[dbo].[PrideMVCCollisionBegin] ([ReportID], [LocalIncidentNum], [version], [MTOReferenceNo], [Submitted]) 
SELECT @NewReportID, [LocalIncidentNum], 
       CONVERT(VARCHAR, (CONVERT(INT, [version]) + 1)), 
       [MTOReferenceNo], [Submitted] 
FROM [MVCOmar].[dbo].[PrideMVCCollisionBegin] 
WHERE [ReportID]=@ReportID;
于 2012-06-27T18:20:07.090 回答
1

SQL Server 支持 CAST 或 CONVERT

CAST(col1 as int)

CONVERT(int,col1)
于 2012-06-27T18:19:58.967 回答