sql server - Why conversion issue occurs -
what wrong query? trying convert int varchar:
delete cm_offlinemessages convert(int, convert(varchar(max), id)) in ('1,2,3') i error:
conversion failed when converting varchar value '1,2,3' data type int.
edit:
i have edited query
[dbo].[cm_deleteofflinemessagebyid] (@id varchar(max)) delete cm_offlinemessages convert(varchar(max), id) in (@id) however no compile time issue, data not getting purged.
exec [dbo].[cm_deleteofflinemessagebyid] @id = n'''10'',''11'',''12'''
you trying convert int varchar , back:
convert(varchar(max), id)makesvarchar(max)int(id)convert(int, ...)converts resultint
since have int on left of in, rdbms tries convert each element of list on right side int well. conversion of '1,2,3' fails, resulting in error.
if wish convert id varchar , use varchar literals inside in list, drop outer conversion:
delete cm_offlinemessages convert(varchar(max), id) in ('1', '2', '3') of course, there no reason this, except learning exercise, because end result equivalent more efficient version without convert:
delete cm_offlinemessages id in (1, 2, 3) edit: cannot pass string @id list of items. use table-valued parameters instead (how?)
Comments
Post a Comment