下面有在delphi的程序中的一条SQL语句:
sSearch := 'select * from Expert where 专家ID in (' + sSearch + ') ' +
           ' Order by 组ID asc,专家ID asc';其中:(' + sSearch + ')中的sSearch 是string类型,我想把它转换成int或者是double,因为(专家ID)是int类型,如果不改,提示有错误,不能运行。
请问应该如何解决,请大家帮我写一下,谢谢!

解决方案 »

  1.   

    1. SQL语句中IN 是用于判断一个值是否在一个集合中,所以LZ这里不必用in,用= 即可;2.楼上不用为sSearch 是string类型而考虑什么转换为int的问题,
    在delphi中,SQL语句也是一个字符串,要组成字符串,sSearch 应该也必须是字符串,如:
    sSearch := 'select * from Expert where 专家ID = ' + sSearch + ' Order by 组ID asc,专家ID asc';这样应该可以了
      

  2.   

    --测试环境
    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
      

  3.   

    是不是我误会楼主意思,把简单问题复杂化了:)
    按楼主的意思,sSearch应该是一个表达式列表,所以直接用是不行的!
    如果不是这种情况,用一楼大哥的语句就可以了!