Oracle 提取字段中的数字 ,在PL/SQL中实现。
作者&投稿:谯姿 (若有异议请与网页底部的电邮联系)
可以用几个Oracle的系统函数联合完成。语句如下:SELECT SUBSTR('AHS1234 3232',0,INSTR('AHS1234 3232',' ')-1) str FROM dual; 结果是:AHS1234
instr函数是查找空格在字符串中的位置,SUBSTR函数是截取字符串,从字符串开始截取到空格的位置的前一位(例:空格的位置是8,截取8-1=7位字符)
两种方法--1、translateselect substr(translate('商501啊啊','0123456789'||'商501啊啊','0123456789'),1,1) from dual; --2、正则表达式select substr(regexp_replace('商501啊啊','[^0-9]'),1,1) from dual;
内层的TRANSLATE将数字替换成空格
外层的TRANSLATE将数字之外的替换成空格,剩下的就是数字了
利用系统临时表实现;
select substr('<ROOT><MPAGEID>20673</MP',16,5) from dual;
结果 20673
利用实体表实现;
select substr(字段名,16.5) from 表名;
结果 20673
先截取字符串,然后再替换,或者使用正则表达式~!
延香君菏: select translate('CYJ8-ABC' , '0123456789' || 'CYJ8-ABC' , '0123456789') from dual; 可以将CYJ8-ABC替换掉
月湖区13638442257: oracle中截取一个字符串中的数字怎么做? - ?
延香君菏: 如果Oracle版本不是太低的话,使用 正则表达式函数 REGEXP_SUBSTR 处理.5个参数 第一个是输入的字符串 第二个是正则表达式 第三个是标识从第几个字符开始正则表达式匹配.(默认为1) 第四个是标识第几个匹配组.(默认为1) 第五个是是取值范围: i:大小写不敏感; c:大小写敏感; n:点号 . 不匹配换行符号; m:多行模式; x:扩展模式,忽略正则表达式中的空白字符.SQL> SELECT2 REGEXP_SUBSTR(a,'[0-9]+')3 FROM4 test_reg_substr5 WHERE6 REGEXP_LIKE(a, '[0-9]+');
月湖区13638442257: oracle中截取一个字符串中的数字?
延香君菏: select substr(字段,4,instr(字段,'-')-4) from dual 例如: select substr('LGB16-ABCD',4,instr('LGB16-ABCD','-')-4) from dual good luck!!!
月湖区13638442257: 截取oracle字符串中的数字 - ?
延香君菏: 用regexp_substr函数例如:select regexp_substr('CYJ8-ABC','[0-9]+') from dual;
月湖区13638442257: oracle怎么在字符字段中查出只包含数字的数据 - ?
延香君菏: 你应该希望提取的字段只要含有数字就提出,剔除空和不含数字的字符串. select * from table where regexp_substr(check,'[0-9]+') is not null
月湖区13638442257: oracle 字符串截取: 我用从一个字段中提取字符串中的数字,字符串不是很规则 - ?
延香君菏: 这个问题不单是提取汉字的问题,还要处理不同级别单位的转换,处理办法参考如下:1、如果只有,瓦和千瓦,可以这样写,select sum(decode (c1_1,1,c1_1*1000,c1_1)) from (select t.*, decode(c1.contain('瓦'),1,c1.contain('千瓦'),0,0) c1_1,replace(replace(c1,'千瓦','') ,'瓦','')) c1 from table1 t)2、如果不只瓦和千瓦,可依照上述办法添加相应条件3、如果不是sum求和,可根据实际需要更改统计函数
月湖区13638442257: oracle截取字段的数据 - ?
延香君菏: 如果[]只出现一次,且保证在两头,则 rtrim(ltrim(string,'['),']') 如果[]只出现一次,但不保证在两头,则 substr(string,instr(string,'[',1)+1,(instr(string,']',1)-instr(string,'[',1)-1)) 出现多次,必须使用数组,并写存储过程来获取.
月湖区13638442257: oracle 如何查字段里面的数据 - ?
延香君菏: 1、查包含字段NAME的所有表 select table_name , column_name,data_type from user_tab_cols where column_name = 'NAME'; 2、查李三 select * from A where name='李三';
月湖区13638442257: oracle 怎么从一个数据库表里的字段数据抽取到另一个数据库表里的字段中 - ?
延香君菏: 建立dblink,然后利用insert select语句就可以了.至于建立dblink和相关语句,网上太多了,我就不赘述了.
月湖区13638442257: 如何截取Oracle字段中的字符 - ?
延香君菏: 您的需要就是去掉[]而获得[]之间的字符对吧 其实很简单,有一个截取字符的函数substr('string',n,m) 其中'string'是目标字符串,n为截取的起始位置,m为结束的位置.例如:select substr('[xxxx]' , 2, 4) from 表名;意思就是对[xxxx]从第二个位置开始截取4个字符.结果就是 xxxx