17,377
社区成员
发帖
与我相关
我的任务
分享
Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.3.0
Connected as ccpph1
SQL> select regexp_substr(name,'^$','[0-9]+',1,1) from t;
select regexp_substr(name,'^$','[0-9]+',1,1) from t
ORA-01722: 无效数字
select name,substr(name,instr(name,'基价:')+length('基价:'),decode(instr(name,'折扣:'),0,length(name)-length('基价:'),instr(name,'-折扣:')-length('基价:')-instr(name,'基价:'))) from t;
drop table t purge;
create table t(name varchar2(100));
insert into t(name) values('基价:60');
insert into t(name) values('基价:310-折扣:1.00000000');
insert into t(name) values('基价:6620');
insert into t(name) values('基价:120-折扣:1.00000000');
commit;
-- 要不这样:
col name for a25;
col sub_name for a25;
select name,
substr(name, instr(name,'基价:')+length('基价:'),
decode(instr(name,'-折扣'),0,length(name),instr(name,'-折扣')-instr(name,'基价:')-length('基价:'))) as sub_name
from t;
-- 或者这样:
col name for a25;
col sub_name for a25;
select name,
substr(name, instr(name,'基价:')+length('基价:'),
instr(name||'-折扣','-折扣')-instr(name,'基价:')-length('基价:') ) as sub_name
from t;
drop table t purge;
create table t(name varchar2(100));
insert into t(name) values('基价:60');
insert into t(name) values('基价:310-折扣:1.00000000');
insert into t(name) values('基价:6620');
insert into t(name) values('基价:120-折扣:1.00000000');
commit;
col name for a25;
col sub_name for a25;
select name,
substr(name, instr(name,'基价:')+length('基价:'),
decode(instr(name,'-折扣'),0,length(name),instr(name,'-折扣')-instr(name,'基价:')-length('基价:'))) as sub_name
from t;
eygle@SZTYORA> create table t(name varchar2(100));
表已创建。
eygle@SZTYORA> insert into t(name) values('基价:60');
已创建 1 行。
eygle@SZTYORA> insert into t(name) values('基价:310-折扣:1.00000000');
已创建 1 行。
eygle@SZTYORA> insert into t(name) values('基价:6620');
已创建 1 行。
eygle@SZTYORA> insert into t(name) values('基价:120-折扣:1.00000000');
已创建 1 行。
eygle@SZTYORA> commit;
提交完成。
eygle@SZTYORA>
eygle@SZTYORA> col name for a25;
eygle@SZTYORA> col sub_name for a25;
eygle@SZTYORA> select name,
2 substr(name, instr(name,'基价:')+length('基价:'),
3 decode(instr(name,'-折扣'),0,length(name),instr(name,'-折扣')-instr(name,'基价:')-length('基价:'))) as sub_name
4 from t;
NAME SUB_NAME
------------------------- -------------------------
基价:60 60
基价:310-折扣:1.00000000 310
基价:6620 6620
基价:120-折扣:1.00000000 120