重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一、字符串查找函数 INSTR()
创新互联建站长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为房县企业提供专业的网站制作、成都网站建设,房县网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
二、字符串截取函数 SUBSTR()
三、实际应用: SUBSTR 和 INSTR 结合使用
例:(1) INSTR('todayisabeautifulday' , 'to')
返回结果:1 (因为字符串索引号从1开始,所以返回1,不是返回0)
(2) INSTR('todayisabeautifulday' , 'day',1, 1)
返回结果: 3 (返回第一次查出 day 的位置)
(3) 若改成 INSTR('todayisabeautifulday' , 'day',1, 2)
则返回结果为第二次出现 day 的位置:18
(4) INSTR('today is a beautiful day' , 'is',1, 1)
返回结果:7 (空格也是一个字符)
例:(1)SUBSTR ('ABCDEFG', 2, 3)
返回结果:'BCD' (从第2个字符开始,截取长度为3的子串)
(2)substr('ABCDEFG', -2)
返回结果:'FG' (从倒数第2个字符开始,截取到源串的末尾)
(3)substr('ABCDEFG', -4, 2)
返回结果:'DE' (从倒数第4个字符开始,截取长度为2的子串)
(4)substr('ABCDEFG', 4, -1)
返回结果: 空字符串 (截取长度小于1时,返回空字符串 )
结合 SUBSTR()和 INSTR()来实现截取字符串中特定字符前后的字符串
(1)截取 “hello,world” 字符串中 “,” 分隔符之前的字符串
(2)截取 “hello,world, ye” 字符串中第1次出现的 “,” 字符和第2次出现的 “,” 字符之间的字符串
参考链接:
substr Oracle中的截取字符串函数。
字符串值:start_position,截取字符串的初始位置, Number型,start_position为负数时,表示从字符串右边数起。length截取位数,Number型,其中,length为可选,如果length为空,则返回start_position后面的所有字符。从start_position开始,取出length个字符并返回取出的字符串。
输出结果
The original string str1 is:
Heterological paradoxes are persistent.
The substring str1 copied is: logical
The default substring str3 is:
Heterological paradoxes are persistent.
which is the entire original string.
}
substr(字符串,-10)
Oracle 字符串函数 substr(字符串,截取开始位置,截取长度)
1. 如果最后一个截取长度参数为空,则表示从截取开始位置起截到最末
2. 如果截取开始位置 为大于0的数字,则表示从字符串左数几位开始
3. 如果截取开始位置 为小于0的数字,则表示从字符串右数几位开始
如果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]+');
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。