永发信息网

如下sql语句报错: DECLARE @ids VARCHAr(50) SET @ids='1,2' DELETe FROM Tab WHERe ID

答案:3  悬赏:50  手机版
解决时间 2021-02-07 02:38
  • 提问者网友:沉默的哀伤
  • 2021-02-06 17:42
错误信息:
消息 245,级别 16,状态 1,第 3 行
在将 varchar 值 '1,2' 转换成数据类型 int 时失败。

但是我将字符串'1,2'直接放到IN后面的括号中改成IN(1,2)就通过,这是为什么啊?
最佳答案
  • 五星知识达人网友:十年萤火照君眠
  • 2021-02-06 18:03
直接放到IN后面的括号中改成IN(1,2) --------------这个可以通过,因为in(1,2,3,4,5)表示id在这些数中的一个,逗号只是用来区分2个值(12,3)是2个值(1,2,3)是3个值,,这是为什么放后面能通过的原因。

你定义的varchar 是字符串, 变量是字符串型,'1,2' 有3个字符,这3个字符分别是'1' , ',' , '2'。这就是说为什么你放后面会错,因为这3个是字符,逗号怎么转变成整数。
全部回答
  • 1楼网友:三千妖杀
  • 2021-02-06 20:14
你的@ids是字符类型的,id应该是数字整形,这样转换的时候就会报错。1,2无法转换为数字
  • 2楼网友:未来江山和你
  • 2021-02-06 18:36
你好! DECLARE @ids VARHCAR(50) DECLARE @prostr VARCHAr(MAX) SET @ids='1,2' SET @prostr='DELETe FROM tab WHERe id IN ('+@ids+')' exec (@prostr) 希望对你有所帮助,望采纳。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯