返回首页
当前位置: 主页 > 数据库 > Mssql教程 >

sql批量删除将varchar值转换成int失败因没用方法charindex

时间:2017-12-11 23:15来源:电脑教程学习网 www.etwiki.cn 编辑:admin

编写程序过程中,用 sql 语句操作数据库是家常便饭,而批量删除记录又是少不了要编写的功能。调用 sql 语句批量删除常常会抛出如下错误:

  在将 Varchar 值 '9,7,4,2' 转换成数据类型 int 时失败。

  有的时候改一下 sql 语句,又能正常执行;而有的时候无论怎么改,错误像影子一样始终不分离。下面先看怎么写批量删除的语句,才会出现将Varchar值转换成int失败的错误。

 

  1、将 Varchar 值 '9,7,4,2' 转换成数据类型 int 时失败 sql 语句:

  Create Proc DelAsIds
  @Id Varchar(1000)--一串 Id 字符串,如 '9,7,4,2'
  As

  Delete From product Where Id in(@Id)
  Go

  这种情况一定会出现将Varchar值转换成int失败的错误,还有一种情况有时出现,有时又不出现,sql 代码如下:

  Create Proc DelAsIds
  @Id Varchar(1000)
  As

  exec('Delete From product Where Id in(' + @Id + ')')
  Go

 

  2、解决sql批量删除将Varchar值转换成int失败的方法

  如果用 exec 执行 sql 语句还出错误,只能用 charindex 方法来解决,sql 代码作如下修改即可:

  Alter Proc DelAsIds
  @Id Varchar(1000)
  As

  Delete From product Where charindex(rtrim(Id), @Id) > 0
  Go

  用了 charindex 方法,批量删除传递一串记录 Id 字符串,再也不会出现将 Varchar 值 '9,7,4,2' 转换成数据类型 int 时失败的错误,不防立即尝试一翻。

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):sqlserver
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容