标题:请高手指教!拆分字段的问题!!!!
只看楼主
laizi0325
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-11-26
 问题点数:0 回复次数:11 
请高手指教!拆分字段的问题!!!!
现有一个ks表,内含zkzh,kgda两个字段
kgda中每条纪录的长度都是560(形如:00010002000300040005............),怎样写语句才能把该字段拆分为长度为4的140个字段,且查询结果是在一张表中的!
心情很急切!!!望高人指点!!!
搜索更多相关主题的帖子: 字段 拆分 指教 
2007-11-26 15:02
laizi0325
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-11-26
得分:0 
各位版主大人可在!??
各位能人隐士可在!??请赐教!!!
2007-11-26 15:45
MikeFT
Rank: 1
来 自:青岛
等 级:新手上路
帖 子:644
专家分:0
注 册:2006-11-1
得分:0 
如果是字符型,你可以用截取函数!!!

Live And Learn !!!
2007-11-26 15:45
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
是否满足你的要求..

create table tb(Col1 char(4))
declare @Col_Number int,@i int
declare @sql varchar(8000)
declare @value varchar(560)
set @Col_Number = 2
while @Col_Number<=140
begin
    set @sql='alter table tb add Col'+cast(@Col_Number as varchar)+' char(4)'
    exec(@sql)
    set @Col_Number = @Col_Number+1
end

set @value=''
while len(@value)<560
begin
    select @value=@value+stuff(rand(),1,2,'')
end

set @value=left(@value,560)
select @i=1,@sql=''
while @value<>''
begin
    select @sql=@sql+left(@value,4)+''',''',
           @value=substring(@value,5,560)
end
select @sql=''''+@sql,
       @sql=left(@sql,len(@sql)-len(','''))
exec ('insert into tb select '+@sql)

select * from tb

drop table tb

/*
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col11 Col12 Col13 Col14 Col15 Col16 Col17 Col18 Col19 Col20 Col21 Col22 Col23 Col24 Col25 Col26 Col27 Col28 Col29 Col30 Col31 Col32 Col33 Col34 Col35 Col36 Col37 Col38 Col39 Col40 Col41 Col42 Col43 Col44 Col45 Col46 Col47 Col48 Col49 Col50 Col51 Col52 Col53 Col54 Col55 Col56 Col57 Col58 Col59 Col60 Col61 Col62 Col63 Col64 Col65 Col66 Col67 Col68 Col69 Col70 Col71 Col72 Col73 Col74 Col75 Col76 Col77 Col78 Col79 Col80 Col81 Col82 Col83 Col84 Col85 Col86 Col87 Col88 Col89 Col90 Col91 Col92 Col93 Col94 Col95 Col96 Col97 Col98 Col99 Col100 Col101 Col102 Col103 Col104 Col105 Col106 Col107 Col108 Col109 Col110 Col111 Col112 Col113 Col114 Col115 Col116 Col117 Col118 Col119 Col120 Col121 Col122 Col123 Col124 Col125 Col126 Col127 Col128 Col129 Col130 Col131 Col132 Col133 Col134 Col135 Col136 Col137 Col138 Col139 Col140
---- ---- ---- ---- ---- ---- ---- ---- ---- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------
5358 4731 7291 6241 5850 2125 5051 6294 3412 8838  7194  8109  1060  4942  0438  4662  3192  8748  5694  8204  2803  6824  6779  4093  6345  9273  3103  5853  4180  2755  1701  2080  2980  9926  5573  0804  9058  5211  8048  4846  4698  2503  3925  8785  3316  2074  2889  4308  6979  7088  8281  5771  5586  9562  3723  7906  4522  0304  1442  6543  1811  2360  9160  9613  9453  3632  0436  8190  2489  5677  7948  6971  0645  4945  9176  8292  0879  4856  4956  8136  5397  6793  2984  2206  6742  1963  3627  6966  3977  7176  7616  5509  5387  6482  1179  8663  8038  0579  9428  6031   1549   7253   6762   9366   5239   5628   2130   2189   6915   6006   5510   3694   0559   8151   3425   6726   2621   8599   9040   1437   2937   2652   1575   3960   3100   9649   9681   6112   0355   3383   5078   0080   8267   8251   7728   4162   6223   8273   1788   0949
*/

我的msn: myfend@
2007-11-26 15:48
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
版块有限..显示不好..
你在查询分析器里执行一下..

我的msn: myfend@
2007-11-26 15:49
XieLi
Rank: 1
等 级:新手上路
威 望:1
帖 子:762
专家分:0
注 册:2007-7-24
得分:0 
DROP TABLE #T
CREATE TABLE  #T (ID INT ,ID1 VARCHAR(560))
DECLARE @SQL VARCHAR(8000),@I INTEGER ,@II INTEGER
INSERT INTO #T VALUES(1,'0001000200030004000500060004')
SET @SQL='SELECT ID,'
SET @I=1
SELECT @II=LEN(ID1)/4 FROM #T
WHILE @I< @II
    BEGIN
        IF @I=1
           SET  @SQL=@SQL + 'SUBSTRING(ID1,'+CONVERT(VARCHAR(10),(@I))+',4) AS COL'+CONVERT(VARCHAR(10),@I)
        ELSE
        SET  @SQL=@SQL + ',SUBSTRING(ID1,'+CONVERT(VARCHAR(10),((4*(@I-1))+1))+',4) AS COL'+CONVERT(VARCHAR(10),@I)
 
        SET @I=@I+1
  END
SET @SQL=@SQL +' FROM #T'
EXEC  (@SQL)
我也试了一下!呵!

拥有蓝天的白云,拥有你的我.
2007-11-26 16:15
laizi0325
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-11-26
得分:0 
多谢purana版主!!!果然功力深厚!!
但是应该不用这么复杂了 还用到了随机数啊!
我的意思是将已有的字段分成多个长度相同(为四)的字段 并保存到另张表中!
我用substring已经分别查出来了 但是不知道怎么合在一起!!
语附句:declare @count int
set @count=1
while @count<=560
begin
select substring(kgda,@count,4) from ks
set @count=@count+4
end
2007-11-26 16:18
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
嘿嘿..不错啊..学习下..

我的msn: myfend@
2007-11-26 16:18
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
嘿嘿..用到随机数产生数据..只是方便我测试而已..
你可以参考一下6楼 xieli的例子..可以满足你的要求..

我的msn: myfend@
2007-11-26 16:20
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
得分:0 
原帖由 [bold][underline]XieLi[/underline][/bold] 于 2007-11-26 16:15 发表 [url=http://bbs.][/url]
DROP TABLE #T
CREATE TABLE  #T (ID INT ,ID1 VARCHAR(560))
DECLARE @SQL VARCHAR(8000),@I INTEGER ,@II INTEGER
INSERT INTO #T VALUES(1,'0001000200030004000500060004')
SET @SQL='SELECT ID,'
SET @I=1
SEL ...


果然功力深厚.

Repeat  Life=Study;Until (death);
2007-11-26 16:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-188502-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.233138 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved