下面有在delphi的程序中的一条SQL语句:
sSearch := 'select * from Expert where 专家ID in (' + sSearch + ') ' +
' Order by 组ID asc,专家ID asc';其中:(' + sSearch + ')中的sSearch 是string类型,我想把它转换成int或者是double,因为(专家ID)是int类型,如果不改,提示有错误,不能运行。
请问应该如何解决,请大家帮我写一下,谢谢!
sSearch := 'select * from Expert where 专家ID in (' + sSearch + ') ' +
' Order by 组ID asc,专家ID asc';其中:(' + sSearch + ')中的sSearch 是string类型,我想把它转换成int或者是double,因为(专家ID)是int类型,如果不改,提示有错误,不能运行。
请问应该如何解决,请大家帮我写一下,谢谢!
解决方案 »
- 问一个消息丢失的问题
- 还没正式用,就发现Delphi2009几个Bugs!
- DLL高手请进,vb多次调用该dll后会出现访问冲突
- 搜集Delphi下开发Socket程序的资料(文档,源码......),UP有分。
- 用ADO连接数据库,出现了[DBNMPNTW]Connectionopen(CreateFile())是怎么回事呀!
- 怎么样在sql语句中格式化字段的长度
- 200分!很多软件都是这样设计的:左侧有一排导航功能按钮,按下相应的按钮后,主界面就切换到相应的功能(就像"Windows优化大师"那样)这
- DCom服务器运行失败
- 这样的存储过程/函数怎么写?
- 一个最简单的DLL都调用不了,来看看是不是设置不对?
- 调试中的add watch的用法
- 如何在Delphi获取sql server的服务器名?+adoconnection怎么和sql实现动态连接
在delphi中,SQL语句也是一个字符串,要组成字符串,sSearch 应该也必须是字符串,如:
sSearch := 'select * from Expert where 专家ID = ' + sSearch + ' Order by 组ID asc,专家ID asc';这样应该可以了
CREATE TABLE Expert (专家ID INT)
INSERT Expert SELECT 1
UNION ALL SELECT 2
UNION ALL SELECT 3
UNION ALL SELECT 4
UNION ALL SELECT 5
UNION ALL SELECT 6--测试语句
DECLARE @sSearch varchar(1000)
SELECT @sSearch='2,3'
--方法1
EXEC('SELECT * FROM Expert WHERE 专家ID in ('+@SSearch+')')
--方法2
SELECT * FROM EXPERT WHERE CHARINDEX(RTRIM(专家ID),','+@SSearch+',')>0
--删除测试环境
DROP TABLE EXPERT
按楼主的意思,sSearch应该是一个表达式列表,所以直接用是不行的!
如果不是这种情况,用一楼大哥的语句就可以了!