字段拆解

[复制链接]
查看11 | 回复6 | 2015-12-23 11:56:36 | 显示全部楼层 |阅读模式
我这边有张运单表,表里有个货物尺寸的字段,货物尺寸记录方式是:长*宽*高。create table t_waybill(bill_no varchar2(20),goods_sizevarchar2(100))
insert into t_waybill VALUES ('W82531247','20*10*10');
insert into t_waybill VALUES ('W106137970','20*10*10+20*10*10');
insert into t_waybill VALUES ('W96967183','20*10*10+50*10*10');

一个运单信息可以对应多个货物,这样的货物尺寸记录为:长*宽*高 + 长*宽*高 +....
由于不确定货物的个数所以不知道有多少个加号。
我现在想计算出货物尺寸最大的边(边是长宽高的一个)不大于40CM。
在Oracle有没有什么方法可以方便拆解这个字段取最大的边的值。

回复

使用道具 举报

千问 | 2015-12-23 11:56:36 | 显示全部楼层
统计运单的数据量。
回复

使用道具 举报

千问 | 2015-12-23 11:56:36 | 显示全部楼层
不知道怎么写到一个SQL中
>declare ilennumber;
2begin
3for sn in ( select bill_no,rowid row_id from t_waybill )loop
4execute immediate 'select max(regexp_substr(goods_size,''[^+*]+'',1,level))from (
5select *from t_waybill where rowid='''||sn.row_id||''' )
6connect by level declare ilennumber;
2begin
多谢大神

~
回复

使用道具 举报

千问 | 2015-12-23 11:56:36 | 显示全部楼层
select bill_no,goods_size,max(val)
from (
select t.bill_no,t.goods_size,regexp_substr(goods_size,'[0-9]+',1,level) val
from t_waybill t
connect by bill_no=prior bill_no
and level<=regexp_count(goods_size,'[*+]')+1
and prior dbms_random.value is not null
)
group by bill_no,goods_size
having max(val)<=40;
回复

使用道具 举报

千问 | 2015-12-23 11:56:36 | 显示全部楼层
bfc99 发表于 2015-10-22 16:54
select bill_no,goods_size,max(val)
from (
select t.bill_no,t.goods_size,regexp_substr(goods_size,' ...


牛,收藏了。
回复

使用道具 举报

千问 | 2015-12-23 11:56:36 | 显示全部楼层
bfc99 发表于 2015-10-22 16:54
select bill_no,goods_size,max(val)
from (
select t.bill_no,t.goods_size,regexp_substr(goods_size,' ...

多谢大神


回复

使用道具 举报

千问 | 2015-12-23 11:56:36 | 显示全部楼层
不用正则表达式不好写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行