Oracle获取字符串中某字符前面的数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle获取字符串中某字符前面的数字相关的知识,希望对你有一定的参考价值。
比如 1个 苹果2元
一盒饼干43元
一瓶茅台800元
求获取元前面的数字
2
43
800
求帮助哇
麻烦贴个sql,多多谢
利用下面的语句即可得到:
select NAME,TRIM(TRANSLATE(NAME, trim(TRANSLATE(NAME, '1234567890', ' ')), ' ')) from test1 ,test1是建的测试表
参考技术A select t.str,replace(regexp_substr(str,'[0-9]+元'),'元','') mony from t测试:
sys@STARTREK> with t as (2 select '苹果2元' as str from dual
3 union all
4 select '一盒饼干43元' as str from dual
5 union all
6 select '一瓶茅台800元' as str from dual
7 )
8 select t.str,replace(regexp_substr(str,'[0-9]+元'),'元','') mony from t
9 /
STR MONY
------------- --------------------------
苹果2元 2
一盒饼干43元 43
一瓶茅台800元 800 参考技术B 思路:写函数,取元前面数字,根据ASC码追问
。。。一个sql能解决吗,函数很难麻烦
追答create or replace function findNumber(inputStr varchar2)
return varchar2 is
i integer;
tmp varchar2(100);
begin
tmp := '';
i := InStr(inputStr,'元')-1;
while (InStr('0123456789',substr(inputStr,i,1)) > 1 and i >0) loop
tmp := substr(inputStr,i,1) || tmp;
i := i -1;
end loop;
return tmp;
end findNumber;
select findNumber(你的字段名) from 你的表名;
你贴个sql来看看??
oracle从某一个字符开始删除前面所有的字符
例如:‘海城客运公司|中型高一 ’ ,我想删除‘|’前面的所有字符,怎么处理啊?
参考技术A SELECT SUBSTR('海城客运公司|中型高一',INSTR('海城客运公司|中型高一', '|', 1, 1) + 1) SR
FROM DUAL;
UPDATE TAB T
SET COL = SUBSTR(COL, INSTR(COL, '|', 1, 1) + 1)
WHERE COL LIKE '%|%';
COMMIT;本回答被提问者采纳 参考技术B select substr('海城客运公司|中型高一',instr('海城客运公司|中型高一','|',1,1)+1) from dual
以上是关于Oracle获取字符串中某字符前面的数字的主要内容,如果未能解决你的问题,请参考以下文章