数据库版本:Sybase Adaptive Server Anywhere Database Engine Version 8.0.2.4122
数据表名称:A
数据表内容:
code dfy zje
——————————————
100235 201202 5.0000
100236 201202 15.0000
100237 201202 100.0000
100238 201202 4009.0000
100239 201202 10002.0000
本人菜鸟,我想用sql语句select 某条记录时将‘zje’列拆成多列(zje的字符长度不定,小数点前最多5位。以上需要用sql语句实现,不在程序中实现。),比如查找code=100235,那么想得到的结果是100235,201202,5,.,0,0,0,0
比如查找code=100239,那么想得到的结果是100239,201202,1, 0,0,0,2,.,0,0,0,0
求解。。。。
------解决方案--------------------
貌似只能写存储过程来实现。
------解决方案--------------------
生成辅助表,字段ID,内容1-100000,与工作表连接 ,拆分字符串后,再用变量累加的方法
得到结果
------解决方案--------------------
//若小数点后都是四位
SELECT code+','+
dfy+','+
substring(zje,1,1)+','+
substring(zje,2,1)+','+
substring(zje,3,1)+','+
substring(zje,4,1)+','+
substring(zje,5,1)+','+
substring(zje,6,1)+','
FROM A
WHERE LENGTH(CONVERT(VARCHAR(10),zje))=6
union
SELECT code+','+
dfy+','+
substring(zje,1,1)+','+
substring(zje,2,1)+','+
substring(zje,3,1)+','+
substring(zje,4,1)+','+
substring(zje,5,1)+','+
substring(zje,6,1)+','+
substring(zje,7,1)
FROM DBA.hr_leave_record
WHERE LENGTH(CONVERT(VARCHAR(10),zje))=7
union
......
根据需要写成,就这个思路