substr,instr使用

今天开发问到一个关于字符截取的问题,当时一时没想起来如何做,忘记了函数了。
大概表的字段如下
1111#abac
1134#defha
134#xxxe
....
要获得#前面的数字,然后排序。
测试如下:
SQL> create table tt(a varchar2(20));
SQL> insert into tt values ('1111#abc');
1 row created.
SQL> insert into tt values ('112211#abc');
1 row created.
SQL> commit;
Commit complete.
SQL> select substr(1,1,instr(a,'#')) from dual;
select substr(1,1,instr(a,'#')) from dual
                        *
ERROR at line 1:
ORA-00904: "A": invalid identifier

SQL> select substr(a,1,instr(a,'#')) from tt;
SUBSTR(A,1,INSTR(A,'#'))
----------------------------------------
1111#
112211#
1111#
112211#
SQL> select substr(a,1,insrt(a,'#')-1) from tt;
select substr(a,1,insrt(a,'#')-1) from tt
                  *
ERROR at line 1:
ORA-00904: "INSRT": invalid identifier

SQL> change /insrt/instr
  1* select substr(a,1,instr(a,'#')-1) from tt
SQL> /
SUBSTR(A,1,INSTR(A,'#')-1)
----------------------------------------
1111
112211
1111
112211
很多函数不经常使用,很容易忘记呢。。。

Oracle中INSTR的用法:
INSTR方法的格式为
INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号)
返回找到的位置,如果找不到则返回0.
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 在字符串中查找'OR',从第三个字符位置开始查找"OR",取第三个字后第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "aaa" FROM DUAL的显示结果是
Instring
——————
14
oracle的substr函数的用法:
 取得字符串中指定起始位置和长度的字符串   substr( string, start_position, [ length ] )
 如:
     substr('This is a test', 6, 2)     would return 'is'
     substr('This is a test', 6)     would return 'is a test'
     substr('TechOnTheNet', -3, 3)     would return 'Net'
     substr('TechOnTheNet', -6, 3)     would return 'The'

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22779291/viewspace-717452/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22779291/viewspace-717452/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值