declare @iSumAmount decimal(10,2) declare @iExchangeMoney NVARCHAR(10) declare @replace NVARCHAR(10)if @iExchangeMoney is NULL set @iExchangeMoney='0' if @replace is NULL set @replace='0'--问题在这句: set @iSumAmount=convert(decimal(10,2),ltrim(rtrim(@iExchangeMoney)))+convert(decimal(10,2),ltrim(rtrim(@replace))) /* The command(s) completed successfully. */
declare @iSumAmount decimal(10,2) declare @iExchangeMoney NVARCHAR(10) declare @replace NVARCHAR(10) if isnumeric(@iExchangeMoney)=0 set @iExchangeMoney='0' if isnumeric(@replace)=0 set @replace='0' select @iExchangeMoney,@replace /* ---------- ---------- 0 0(1 行受影响) */
用 isnumeric(字段名)=0 来过滤
把convert 改为vast试试 set @iSumAmount=(cast(ltrim(rtrim(isnull(@iExchangeMoney, '0'))) as numeric(10,2) )+cast(ltrim(rtrim(isnull(@replace, '0'))))as numeric(10,2)) 但我想或许这两种类型不一定能相互转换啊
declare @iExchangeMoney NVARCHAR(10)
declare @replace NVARCHAR(10)if @iExchangeMoney is NULL
set @iExchangeMoney='0'
if @replace is NULL
set @replace='0'--问题在这句:
set @iSumAmount=convert(decimal(10,2),ltrim(rtrim(@iExchangeMoney)))+convert(decimal(10,2),ltrim(rtrim(@replace)))
/*
The command(s) completed successfully.
*/
declare @iExchangeMoney NVARCHAR(10)
declare @replace NVARCHAR(10) if isnumeric(@iExchangeMoney)=0
set @iExchangeMoney='0'
if isnumeric(@replace)=0
set @replace='0' select @iExchangeMoney,@replace
/*
---------- ----------
0 0(1 行受影响)
*/
set @iSumAmount=(cast(ltrim(rtrim(isnull(@iExchangeMoney, '0'))) as numeric(10,2) )+cast(ltrim(rtrim(isnull(@replace, '0'))))as numeric(10,2))
但我想或许这两种类型不一定能相互转换啊