日期:2014-05-17  浏览次数:20962 次

问2个oracle小问题
1 怎么截取这个字符/前的字母
B258/10
B1/89
我希望得到B258 B1
 
2 有这么一排数据
title   callno   bookrecno
论语 B222/3
论语 B222/3
论语 B222/3
孙子兵法 B222/4
孙子兵法 B222/4
孙子兵法 B222/4
百家姓 B222/5
百家姓 B222/5
百家姓 B222/5
大学中庸 B222/6
大学中庸 B222/6
大学中庸 B222/6

想更新右边1行数据 按照s_order排序

得到结果:
title   callno   bookrecno
论语 B222/3 1
论语 B222/3 1
论语 B222/3 1
孙子兵法 B222/4 2
孙子兵法 B222/4 2
孙子兵法 B222/4 2
百家姓 B222/5 3
百家姓 B222/5 3
百家姓 B222/5 3
大学中庸 B222/6 4
大学中庸 B222/6 4
大学中庸 B222/6 4

------最佳解决方案--------------------
1
select substr('B258/10',1,instr('B258/10','/')-1)
------其他解决方案--------------------
' '
------其他解决方案--------------------
substr('B1/89',1,instr('B1/89','/')-1) from dual;

2

------其他解决方案--------------------
2 有意义么?不知道你想干啥
------其他解决方案--------------------
引用:
2 有意义么?不知道你想干啥

因为数据量很大
我想根据num类型来update
用varchar更新很慢
而且是title那么多字符 就更慢了