如何写一个这样的存储过程 有一个表TABLE ,TABLE中有一个字段为MC,MC字段中的数据格式都是这样的5C07C1/41A$A61K31/16B ,”$“是用来区分两个数据,我想把里面的数据都变成这种格式C07C001/41A$ A61K031/16B这两种格式的区别是”1/“变成了“001/”和”31/“变成了”031/“ 变换规律是”/“前面数字位不足3位的就前面加0补成3位。还有ORACLE中有没有分割函数就是把数据从”$“处分成两个。各位高手,谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 分开成两个字符SELECT SUBSTR(mc,1,INSTR(mc,'$')-1),SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)) FROM table 补0的那个为什么 前面有5C 后面就是 C 开头了?要前面那个5没有,且要补的数值都是从第5位开始的话,就可以用如下SQL出,否则可能就要用过程了。SELECT SUBSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),1,4)|| LPAD(SUBSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),5,INSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),'/')-5),3,'0') ||SUBSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),INSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),'/'),LENGTH(SUBSTR(mc,1,INSTR(mc,'$')-1))), SUBSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),1,4)|| LPAD(SUBSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),5,INSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),'/')-5),3,'0') ||SUBSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),INSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),'/'),LENGTH(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)))) FROM table 唉,连我自己看了都晕,受不了了,还是用PL/SQL写吧。这个可读性极差。 能告诉我哪里有比较好一点的oracle 方面的书 oracle 10G数据库启动不了,怎么回事? 关于记录表,VARRAY的问题 使用PL/SQL Developer 创建作业(Create job)的问题 在SQLPlus Worksheet里面,输出的错误信息是乱码,要修改哪里才能正确显示? oracle中如何导出导入表结构和数据? 为什么每次我用svrmgrl的时候都出现"ora-12560 TNS协议适配器错误"? 哪里可以下载Pro*C/C++? 不重复记录SQL语句 生产库上有2个service_name,这是怎么回事呢? JDBC搜索CLOB字段阻塞问题 关于翻页的问题 如何提取游标影响的行数?
SELECT SUBSTR(mc,1,INSTR(mc,'$')-1),SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)) FROM table
LPAD(SUBSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),5,INSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),'/')-5),3,'0')
||SUBSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),INSTR(SUBSTR(mc,1,INSTR(mc,'$')-1),'/'),LENGTH(SUBSTR(mc,1,INSTR(mc,'$')-1))),
SUBSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),1,4)||
LPAD(SUBSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),5,INSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),'/')-5),3,'0')
||SUBSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),INSTR(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc)),'/'),LENGTH(SUBSTR(mc,INSTR(mc,'$')+1,LENGTH(mc))))
FROM table