欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

这样晚了有人在线么,跪求拼接字符串高手来来来!

更新时间: 2014-01-05 02:17:44 责任编辑: Author_N1

 

这么晚了有人在线么,跪求拼接字符串高手来来来!!
如题 我在页面 返回值 ret = (0000000054000010,0000000119000010);里面值是字符,不是数字,
   我现在先把在ret里面的值作为sql的条件 写成ret=('0000000054000010','0000000119000010') 
   跪求拼接大神了 谢谢~
--参考方法--
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
*/

--参考方法--
楼主的意思是,从页面中取得的值是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的水平都不咋地
--参考方法--

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)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:44
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8123/
本文WWW.DOC100.NET DOC100.NET版权所有。