一条删除多条语句
DELETE FROM T_CLASS WHERE Class_ID in (2,3,4)前台传来的 Class_ID 的参数是字符串2,3,4
而数据库Class_ID是int型怎么用类型转换把  2,3,4
成int型啊?
强制转换是不是有“,” 会报错啊?
应该怎么做呢?我用的是sql server 2005
在线等,,帮帮忙

解决方案 »

  1.   

    cast(cast('2,3,4' as money) as int)
      

  2.   

    DELETE FROM T_CLASS WHERE Class_ID in (2,3,4)Class_ID是INT型,这句本身没错。可以执行的。
      

  3.   

    declare @s varchar(10)set @s='2,3,4'
    DELETE FROM T_CLASS WHERE  charindex(','+ltrim(Class_ID)+',',','+@s+',')>0
      

  4.   

    declare @s varchar(10)
    set @s='2,3,4'exec ('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
      

  5.   

    declare @s varchar(10)
    set @s='2,3,4'exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')
      

  6.   

    declare @s varchar(10)
    set @s='2,3,4'EXEC('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')明白了,这样也可以。
      

  7.   


    -- 是这个意思吗?
    declare @class_id varchar(40);
    set @class_id='2,3,4';declare @sql varchar(4000);
    set @sql='DELETE FROM T_CLASS WHERE Class_ID in ('+@class_id+')';
    exec(@sql);
      

  8.   

    declare @s varchar(10)
    set @s='2,3,4'
    exec ('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
      

  9.   

    不需要转换:
    DELETE FROM T_CLASS WHERE rtrim(Class_ID) in (@参数)
      

  10.   

    楼主其实不需要转换,如你不在(2,3,4)上加引号的话,在sql语句中是按数字处理的,只有加上引号后才按字符处理,如('2','3','4,),即
    DELETE FROM T_CLASS WHERE Class_ID in (2,3,4)          '按数字处理
    DELETE FROM T_CLASS WHERE Class_ID in ('2','3','4,)   '按字符串处理当然类型转化函数有CAST 和CONVERT,如果需要的话可以查看MSDN。
      

  11.   


    我sql语句是配置在ibatis里的
    前台传来的是字符串'2,3,4',执行sql语句后台就报错,如下在将 nvarchar 值 '2,3,4' 转换成数据类型 int 时失败。;
      

  12.   

    declare @s varchar(10)
    set @s='2,3,4'EXEC('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')这样试了吗
      

  13.   

    试了,不好用啊,
    我知道你们写的sql语句是没问题的
    但是我用程序传到后台的是个带逗号的字符串    2,3,4
    郁闷啊
      

  14.   

    是不是逗号都全角的啊  你试试:declare @s varchar(10)
    set @s='2,3,4'
    set @s = REPLACE(@s,',',',')
    set @s
    EXEC('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')