Reputation: 2015
Error converting data type varchar to numeric for this below query
Please suggest what can i modify to fix
Update BUDTANKS
set BUDTANKS.SHELLCAPACITY = 0.0000000 --Numeric Column
,BUDTANKS.WORKINGCAPACITY = 0.0000000 --Numeric Column
,BUDTANKS.LEASEDCAPACITY = 0.0000000 --Numeric Column
,BUDTANKS.VERSIONID = 1
,BUDTANKS.STATUSID = 1
,BUDTANKS.IMPORTEDRECORD = 1
,BUDTANKS.LastModifiedUserID = 'Import'
,BUDTANKS.LASTMODIFIEDDATETIME = GETDATE()
FROM BUDTANKS BTANK WITH(NOLOCK)
INNER JOIN BUDTERMINALS BT WITH(NOLOCK) ON BT.TERMINALID = BTANK.TERMINALID
INNER JOIN External_Liq_Itm_Tanks ELIT WITH(NOLOCK) ON ELIT.TerminalName = BT.MBFTERMINALNAME AND ELIT.TankName = BTANK.TANKNAME
Where (ISNULL(BTANK.SHELLCAPACITY, '') <> ISNULL(0.0000000, '')
OR ISNULL(BTANK.WORKINGCAPACITY, '') <> ISNULL(0.0000000, '')
OR ISNULL(BTANK.LEASEDCAPACITY, '') <> ISNULL(0.0000000, '')
OR (BTANK.STATUSID <> 1)
OR (BTANK.IMPORTEDRECORD <> 1))
Upvotes: 0
Views: 161
Reputation: 4630
I think your problem with this query is in the Where
condition:
Where (ISNULL(BTANK.SHELLCAPACITY, '') <> ISNULL(0.0000000, '')
OR ISNULL(BTANK.WORKINGCAPACITY, '') <> ISNULL(0.0000000, '')
OR ISNULL(BTANK.LEASEDCAPACITY, '') <> ISNULL(0.0000000, '')
OR (BTANK.STATUSID <> 1)
OR (BTANK.IMPORTEDRECORD <> 1))
You need to change it to:
Where (ISNULL(BTANK.SHELLCAPACITY, 0) <> 0)
OR ISNULL(BTANK.WORKINGCAPACITY,0) <> 0)
OR ISNULL(BTANK.LEASEDCAPACITY, 0) <> 0)
OR (BTANK.STATUSID <> 1)
OR (BTANK.IMPORTEDRECORD <> 1))
or
Where BTANK.SHELLCAPACITY Is Not Null
OR BTANK.WORKINGCAPACITY Is Not Null
OR BTANK.LEASEDCAPACITY Is Not Null
OR (BTANK.STATUSID <> 1)
OR (BTANK.IMPORTEDRECORD <> 1))
Upvotes: 1