SQL语句 字符串类型转换成int

时间:2022-01-27 01:15:03
一条删除多条语句
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型,这句本身没错。可以执行的。

#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


引用 1 楼 htl258 的回复:
SQL code
cast(cast('2,3,4' as money) as int)

这样虽然能转换
但是结果不对了

#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


引用 7 楼 sql_sf 的回复:
引用 1 楼 htl258 的回复:
SQL code
cast(cast('2,3,4' as money) as int)

这样虽然能转换
但是结果不对了


刚开始没理解楼主的意思

#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。

#14


引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4',执行sql语句后台就报错,如下

在将 nvarchar 值 '2,3,4' 转换成数据类型 int 时失败。;


#15


引用 14 楼 vl525lv 的回复:
引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4',执行sql语句后台就报错,如下

在将……



declare @s varchar(10)
set @s='2,3,4'

EXEC('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
这样试了吗

#16


引用 15 楼 htl258 的回复:
引用 14 楼 vl525lv 的回复:
引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4'……



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

#17


引用 16 楼 vl525lv 的回复:
引用 15 楼 htl258 的回复:
引用 14 楼 vl525lv 的回复:
引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibati……

是不是逗号都全角的啊  你试试:



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


该回复于2011-12-31 11:54:34被版主删除

#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


引用 1 楼 htl258 的回复:
SQL code
cast(cast('2,3,4' as money) as int)

这样虽然能转换
但是结果不对了

#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


引用 7 楼 sql_sf 的回复:
引用 1 楼 htl258 的回复:
SQL code
cast(cast('2,3,4' as money) as int)

这样虽然能转换
但是结果不对了


刚开始没理解楼主的意思

#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。

#14


引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4',执行sql语句后台就报错,如下

在将 nvarchar 值 '2,3,4' 转换成数据类型 int 时失败。;


#15


引用 14 楼 vl525lv 的回复:
引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4',执行sql语句后台就报错,如下

在将……



declare @s varchar(10)
set @s='2,3,4'

EXEC('DELETE FROM T_CLASS WHERE Class_ID in ('+@s+')')
这样试了吗

#16


引用 15 楼 htl258 的回复:
引用 14 楼 vl525lv 的回复:
引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibatis里的
前台传来的是字符串'2,3,4'……



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

#17


引用 16 楼 vl525lv 的回复:
引用 15 楼 htl258 的回复:
引用 14 楼 vl525lv 的回复:
引用 5 楼 sql_server_central 的回复:
SQL code
declare @s varchar(10)
set @s='2,3,4'

exec (DELETE FROM T_CLASS WHERE Class_ID in ('@s')')


我sql语句是配置在ibati……

是不是逗号都全角的啊  你试试:



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


该回复于2011-12-31 11:54:34被版主删除

#20