微软BI开拓者数据库专区SQL Server开发 寻求循环读取字段里面的值

1  /  1  页   1 跳转 查看:3452

寻求循环读取字段里面的值

寻求循环读取字段里面的值

有什么方法能读出下面的字符吗?
301\302\303\304\306\307\308\309\310\311\312\313\314\315\316\317\318\319\320\321\322\323\324\325\326\327\328\329\330\331\332\333\334\335\336\337\338\339\340\341\342\343\344\345\368\369\370\371\372\877\380\888\899\
需要把以上字符串转换为去\之后的字符串。还能不能一次读取所有数据,并3位为一个。
比如:
301
302
303
304
306
307
.....

declare @ssyfd int,@len int
select @ssyfd = max(len(ssyfd)) from t_spcxd
set @len = 3
while @len < @ssyfd
begin
    select substring(ssyfd,charindex('\',ssyfd,@len)+1,3) from t_spcxd
end
如果在查询后面加where的话,可以读取,但如果是全表扫描,则读取不出来。我想是@ssyfd这个变量赋值有问题,但不知道怎么去取。
 

回复: 寻求循环读取字段里面的值

declare @d varchar(max)
set @d='301\302\303\304\306\307\308\309\310\311\312\313\314\315\316\317\318\319\320\321\322\323\324\325\326\327\328\329\330\331\332\333\334\335\336\337\338\339\340\341\342\343\344\345\368\369\370\371\372\877\380\888\899\'
set @d='select '+replace(@d,'\',' union all select ')
set @d=left(@d,len(@d)-17)
exec(@d)
虽有智慧,不如乘势;虽有鎡基,不如待时。
君子学以聚之,问以辨之,宽以居之,仁以行之。
独学而无友,则孤陋而寡闻。
 

回复:寻求循环读取字段里面的值

楼上的答案, 赞一个
 

回复:寻求循环读取字段里面的值

狼,有没有遇到过执行类似exec(@d) 的时候,如果@d字符串很长的话,运行速度会很慢??
SQL Server技术交流群:71791281(有些问题在线解决或许会更快)

本群将从即日起严厉打击:刷屏、打广告、粘贴各种垃圾信息的ID,一经发现,马上删除。

希望通过我们的努力,能为大家打造一个健康有序的交流平台。
 

回复 4F chenjing957 的帖子

declare @d varchar(max)
set @d='301\302\303\304\306\307\308\309\310\311\312\313\314\315\316\317\318\319\320\321\322\323\324\325\326\327\328\329\330\331\332\333\334\335\336\337\338\339\340\341\342\343\344\345\368\369\370\371\372\877\380\888\899\'
select @d=replace(@d,'\','')

select substring(@d,Nom*3-2,3) as Num from
(
        select top (len(@d)/3)row_number() over(order by id ) as Nom
        from sysobjects
) as A
自己刚学习 sql 算便 逛逛 大家多提意见
最后编辑汪兴元 最后编辑于 2010-08-17 21:26:28
 
1  /  1  页   1 跳转

版权所有 微软BI开拓者 

Powered by Discuz!NT 2.1.202    Copyright © 2001-2012 Comsenz Inc.
Processed in 0.0937524 second(s) , 3 queries.
返顶部