declare @s varchar(1000)
set @s='0000000054000010,0000000119000010'
declare @v varchar(1000)
set @v=''select @v=@v+aaa
from (
select substring(xx,b.number,1) as aaa
from (select @s as xx)a ,master..spt_values b
where b.type='P' and b.number between 1 and len(xx)
)t
where ascii(aaa) between 48 and 57
select @v/*
00000000540000100000000119000010
*/

解决方案 »

  1.   

    楼主的意思是,从页面中取得的值是0000000054000010,0000000119000010
    要按照逗号拆开,作为查询条件,应该是ret in ('0000000054000010','0000000119000010') 吧?我觉得放在程序中处理可能更简单一些,取得的值按照逗号拆分成一个数据
    循环数据,组合成'0000000054000010','0000000119000010'的格式
    伪代码应该是
    按照C#的写法
    string[] strArr=ret.Split(',')
    string temp=string.empty;
    foreach(string s in strArr)
    {
       temp+="'"+s+""'+","
    }末尾会多出来一个“,”,利用字符串的trimEnd(",")可以去掉
    出来就成可以直接拼接到sql中的要求了('0000000054000010','0000000119000010')当然一个问题会有多种写法,我的习惯是程序中处理简单,就在程序中处理,sql处理起来简单,就在sql中处理,造成的结果就是写程序跟sql的水平都不咋地
      

  2.   


    declare @ret varchar(100),@tsql varchar(200)
     
    select @ret='(0000000054000010,0000000119000010)' select @tsql='select * from [表名] where ret in '
                +replace(replace(replace(@ret,'(','('''),',',''','''),')',''')')-- 打印
    print @tsql
    /*
    select * from [表名] where ret in ('0000000054000010','0000000119000010')
    */-- 执行
    exec(@tsql)