如何在存储过程中将字符串转换为int

时间:2017-03-07 07:02:25

标签: sql-server stored-procedures

以下代码工作但结果为null,是否有人帮我查找问题,似乎在最终结果中将字符串转换为int存在问题

DECLARE @dp1 varchar
DECLARE @dp2 varchar
DECLARE @dp3 varchar
DECLARE @dp4 varchar

DECLARE @dpp1 int
DECLARE @dpp2 int
DECLARE @dpp3 int
DECLARE @dpp4 int


set @dp1 = 'Emkanat'
set @dp2 = 'Masraf'



if (@dp1= 'Emkanat')
Begin
set @dpp1= 8 
Select Emkanat*@dpp1 as val1 FROM Cardetail
End

if (@dp1= 'Tarahi')
Begin
set @dpp1= 8
Select Tarahi*@dpp1 as val1 FROM Cardetail
End

if (@dp1= 'Sandogh')
Begin
set @dpp1= 8 
Select Sandogh*@dpp1 as val1 FROM Cardetail
End

if (@dp1= 'Masraf')
Begin
set @dpp1= 8
Select Masraf*@dpp1 as val1 FROM Cardetail
End

if (@dp2= 'Emkanat')
Begin
set @dpp2= 7 
Select Emkanat*@dpp2 as val2 FROM Cardetail
End

if (@dp2= 'Tarahi')
Begin
set @dpp2= 7 
Select Tarahi*@dpp2 as val2 FROM Cardetail
End

if (@dp2= 'Sandogh')
Begin
set @dpp2= 7 
Select Sandogh*@dpp2 as val2 FROM Cardetail
End

if (@dp2= 'Masraf')
Begin
set @dpp2= 7 
Select Masraf*@dpp2 as val1 FROM Cardetail
End


SELECT 
Namecar,
(Masraf*@dpp1)+(Sandogh*@dpp1)+(Tarahi*@dpp1)+(Emkanat*@dpp1)+(Masraf*@dpp2)+(Sandogh*@dpp2)+(Tarahi*@dpp2)+(Emkanat*@dpp2)
 as finalresult
FROM Cardetail

变量需要由varchar提供,然后根据字符

获取一个int

1 个答案:

答案 0 :(得分:0)

您的代码问题是您没有定义varchar变量的大小。更改下面给出的代码,您将获得所需的输出。我已将varchar大小定义为100,根据您的数据修改它。

DECLARE @dp1 varchar(100) 
DECLARE @dp2 varchar(100) 
DECLARE @dp3 varchar(100) 
DECLARE @dp4 varchar(100)