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
在线等,,帮帮忙
19 个解决方案
#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型,这句本身没错。可以执行的。
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+')')
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
这样虽然能转换
但是结果不对了
#8
-- 是这个意思吗?
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);
#9
declare @s varchar(10)
set @s='2,3,4'
exec ('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
#10
刚开始没理解楼主的意思
#11
不需要转换:
DELETE FROM T_CLASS WHERE rtrim(Class_ID) in (@参数)
#12
美女当都来答题了 看看就很幸福了
#13
楼主其实不需要转换,如你不在(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。
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。
#14
我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4',执行sql语句后台就报错,如下
在将 nvarchar 值 '2,3,4' 转换成数据类型 int 时失败。;
#15
declare @s varchar(10)这样试了吗
set @s='2,3,4'
EXEC('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
#16
试了,不好用啊,
我知道你们写的sql语句是没问题的
但是我用程序传到后台的是个带逗号的字符串 2,3,4
郁闷啊。。。
#17
是不是逗号都全角的啊 你试试:
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+')')
#18
可以在cs文件里把字符串分割成数组,然后赋值给参数传入数据库
#19
#20
#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型,这句本身没错。可以执行的。
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+')')
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
这样虽然能转换
但是结果不对了
#8
-- 是这个意思吗?
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);
#9
declare @s varchar(10)
set @s='2,3,4'
exec ('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
#10
刚开始没理解楼主的意思
#11
不需要转换:
DELETE FROM T_CLASS WHERE rtrim(Class_ID) in (@参数)
#12
美女当都来答题了 看看就很幸福了
#13
楼主其实不需要转换,如你不在(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。
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。
#14
我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4',执行sql语句后台就报错,如下
在将 nvarchar 值 '2,3,4' 转换成数据类型 int 时失败。;
#15
declare @s varchar(10)这样试了吗
set @s='2,3,4'
EXEC('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
#16
试了,不好用啊,
我知道你们写的sql语句是没问题的
但是我用程序传到后台的是个带逗号的字符串 2,3,4
郁闷啊。。。
#17
是不是逗号都全角的啊 你试试:
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+')')
#18
可以在cs文件里把字符串分割成数组,然后赋值给参数传入数据库