如果Oracle版本不是太低的话,使用 正则表达式函数 REGEXP_SUBSTR 处理。\x0d\x0a\x0d\x0a5个参数\x0d\x0a第一个是输入的字符串\x0d\x0a第二个是正则表达式\x0d\x0a第三个是标识从第几个字符开始正则表达式匹配。(默认为1)\x0d\x0a第四个是标识第几个匹配组。(默认为1)\x0d\x0a第五个是是取值范围:\x0d\x0ai:大小写不敏感;\x0d\x0ac:大小写敏感;\x0d\x0an:点号 . 不匹配换行符号;\x0d\x0am:多行模式;\x0d\x0ax:扩展模式,忽略正则表达式中的空白字符。\x0d\x0a\x0d\x0aSQL SELECT\x0d\x0a 2 REGEXP_SUBSTR(a,'[0-9]+')\x0d\x0a 3 FROM\x0d\x0a 4 test_reg_substr\x0d\x0a 5 WHERE\x0d\x0a 6 REGEXP_LIKE(a, '[0-9]+');
创新互联是一家集网站设计、网站制作、网站页面设计、网站优化SEO优化为一体的专业的建站公司,已为成都等多地近百家企业提供网站建设服务。追求良好的浏览体验,以探求精品塑造与理念升华,设计最适合用户的网站页面。 合作只是第一步,服务才是根本,我们始终坚持讲诚信,负责任的原则,为您进行细心、贴心、认真的服务,与众多客户在蓬勃发展的市场环境中,互促共生。
oracle中,截取某个字符串前的字符需要用instr函数和substr函数共同完成。
工具:oracle 10g
步骤:
1、以截取字符串“210-1106000001”中“-”前的部分为例。
2、执行语句为:
select substr('210-1106000001',1,instr('210-1106000001','-')-1) from dual;
3、结果为:
instr函数语法:instr( string1, string2, start_position,nth_appearance )
参数含义:
substr函数语法:substr(strings|express,m,[n])
参数含义:
strings|express :被截取的字符串或字符串表达式。
m 从第m个字符开始截取。
n 截取后字符串长度为n。
你现在截取的就是后七位。至于是不是只要截取后七位那就不知道了,要看你的实际情况。
如果只是后七位,那么就substr(字段名称,length(字段名称)-6)就行。
如果有可能出现AreadfeuBAO2S=否aasda,那么也没问题。用instr定位就行。
substr(字段名称,instr(字段名称,'=否')-5,7),如果=否不要,那么截取5位就行了。
1、将新建好的表aaaa,填充需要查询的数据以"_"或者","为分隔符的两条数据。
2、先挑ID为1的数据进行截取查询演示。
3、如果已知截取字符的长度和特殊字符位置,就可以用substring()函数来从字符串的开始位置,截取到特殊字符出现的位置。
4、使用charindex()函数来返回特殊字符出现的位置,查询结果及语句。
5、使用LEFT()函数和charindex()函数来从字符最左边开始到特殊字符出现的位置。
6、第一个参数表示被截取的字符串,第二个参数表示要在第一个参数中开始截取的位置,第三个参数表示要截取的长度。
SELECT substr('helloword', -1, 5) from dual 从右边开始截取5位。
Oracle 截取字符串
SUBSTR:取子字符串,从“起始位置”开始,取“多少"个,当起始位置为负数的时候,从右边开始查找。
SUBSTR(源字符串,起始位置,要取多少位)
例:Select SUBSTR('ORC+001',1,3) From dual; 返回的是“ORC”
Select SUBSTR('ORC+001',-5,3) From dual; 返回的是“ORC”
INSTR:默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
例:Select INSTR('ORC+001','+',1,1) From dual ;
返回的是"4",如果该字符串没有匹配字符返回的是“0”。
substr('25ID40', 0, 2); 等于25(从0位开始取2个字符)
substr('25ID40', -2); 等于40(倒着取2个字符)