Transact SQL,我如何获取varchar类型,转换为int,添加一个,转换回字符串,然后存储?

时间:2012-06-27 18:16:56

标签: sql tsql

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。

我目前暂时无法做到这两种选择,因为我现在的优先级不同,我的时间有限,代码很老,很多人写的编码习惯很差。

3 个答案:

答案 0 :(得分:4)

你不需要转换它,运行它,会有一个隐式转换

SELECT '1' + 1

返回2

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

答案 1 :(得分:2)

您可以使用the CONVERT function

在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;

答案 2 :(得分:1)

SQL Server支持CAST或CONVERT

CAST(col1 as int)

CONVERT(int,col1)