oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用 收藏
常用函数:substr和instr
1.SUBSTR(string,start_position,[length])    求子字符串,返回字符串
解释:string 元字符串
       start_position   开始位置(从0开始)
       length 可选项,子字符串的个数
For example:
substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符
substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。
substr("ABCDEFG", -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。

2.INSTR(string,subString,position,ocurrence)查找字符串位置
解释:string:源字符串
      subString:要查找的子字符串
      position:查找的开始位置
      ocurrence:源字符串中第几次出现的子字符串
For example:
INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置;返回结果为 14 '

1、substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变。

这个应该去掉0,否则,取到的值为null

原文http://blog.csdn.net/caozhongyan/article/details/6607798

切割字符串,一般是不会通过数据库函数来处理的(大部分是查询出结果后通过代码处理的),但是也有特殊的情况;

比如:Oracle数据库有一张表Node,字段有:

ID:主键

parentID:父节点

STATID:查询编码

NAME:名称

STATNAME:查询名字

SCALE:父子级别

看的出,这是张存储父子结构关系的表,而STATID的左右就是把父子结构的关系拼接起来:比如,某记录为:

ID   parentID    STATID   NAME            STATNAME                 SCALE

01                1       华南             华南                      1

03      01        1s3      上海             华南s上海                2

05      03        1s3s5    浦东新区        华南s上海s浦东新区        3

很容易看的出三条记录的父子结构,而STATID就是把当前记录的所有父节点的ID,用's'连接起来;比如ID=05的记录是“浦东新区”,是第三级的节点,它的父节点即二级节点是ID=03的“上海”,而“上海”的父节点即一级节点是ID=01的“华南”,这时“浦东新区”的STATID 就是1s3s5

以此表为例,分割STATID!

常用函数:substr和instr

SUBSTR(string,start_position,[length])    求子字符串,返回字符串

解释:string 元字符串

start_position   开始位置(从0开始)

length 可选项,子字符串的个数

For example:

substr("ABCDEFG", 0); //返回:ABCDEFG,截取所有字符 
substr("ABCDEFG", 2); //返回:CDEFG,截取从C开始之后所有字符 
substr("ABCDEFG", 0, 3); //返回:ABC,截取从A开始3个字符 
substr("ABCDEFG", 0, 100); //返回:ABCDEFG,100虽然超出预处理的字符串最长度,但不会影响返回结果,系统按预处理字符串最大数量返回。 
substr("ABCDEFG", 0, -3); //返回:EFG,注意参数-3,为负值时表示从尾部开始算起,字符串排列位置不变

INSTR(string,subString,position,ocurrence)查找字符串位置

解释:string:源字符串

subString:要查找的子字符串

position:查找的开始位置

ocurrence:源字符串中第几次出现的子字符串

For example:

INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置;返回结果为 14

由上面两个函数就可以进行字符串的切割了!

比如SQL如下:

select n.ID,n.parentid,n.statid,n.name
   substr(n.statid,instr(n.statid,'s',1,2)+1,(instr(n.statid,'s',1,3)-instr   (n.statid,'s',1,2)-1)) market_id
   from node n

注意:上面查找的就是statid中所有三级节点的ID值

所有,真实使用中一定注意,只有三级(包含三级)以上的节点才有market_id值

==========================================================================================================================

declare aa varchar2 := 'wkressssdfdf';

begin

if instr(aa,'s')>0 then

dbms_output.put_line('有s字符');

else dbms_output.put_line('没有s字符');

end if;

end;

oracle字符串载取及判断是否包含指定字符串的更多相关文章

  1. js判断是否包含指定字符串

      CreateTime--2017年2月28日09:37:06Author:Marydonjs判断是否包含指定字符串 var inputValue = "thunder://piaohua ...

  2. PHP判断字符串中是否包含指定字符串,支持中文哦

    RT,随手写的 /** * 判断字符串中是否包含指定字符串 * @var source 源字符串 * @var target 要判断的是否包含的字符串 * @return bool */ functi ...

  3. 可视化查询(sp_helptext)——快速查询包含指定字符串的存储过程(附源码)

    前言 在开发中,随着业务逻辑的调整,修改存储过程是必不可免的. 那怎么定位到需要修改的存储过程呢?一个一个的点开查询?存储过程少的话还行,一旦存储过程过多,这样是很浪费时间的,一个不注意还会遗漏掉. ...

  4. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  5. Java 判断是否包含指定的子串 contains()

    Java 手册 contains public boolean contains(CharSequence s) 当且仅当此字符串包含指定的 char 值序列时,返回 true. 参数: s - 要搜 ...

  6. C# ADO.NET的SqlDataReader对象,判断是否包含指定字段

    在使用ado.net的SqlDataReader对象时,如果SqlDataReader实例对象中没有对应的字段,则会在那一行报错.而SqlDataReader类又没有判断是否存在指定字段的方法,怎么办 ...

  7. Vim 删除不包含指定字符串的行及统计匹配个数

    Vim 删除不包含指定字符串的行及统计匹配个数 转载▼     Help :g/pattern/d 是找到pattern, 删之 :v/pattern/d 是找到非pattern, 删之 :%s/xx ...

  8. PHP 判断是否包含某字符串

    PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用.PHP判断字符串的包含,可以使用PHP的内置函数 strstr,strpos,stristr直接进行判断.也可以通过e ...

  9. 【C#】判断字符串中是否包含指定字符串,contains与indexof方法效率问题

    #方法一:使用string.Contains方法 string.Contains是大小写敏感的,如果要用该方法来判断一个string是否包含某个关键字keyword,需要把这个string和这个key ...

随机推荐

  1. C++:vector中的v.at(0)和v[0]的区别

    设v是一个vector的对象, 如果v是非空的,则v.at(0)和v[0]是没有区别的,都是取数组中第一个值: 如果v是空的,则v.at(0)会抛出异常(exception std::out_of_r ...

  2. zabbix系列(五)zabbix3.0.4 探索主机Discovery自动发现主机详细图文教程

    Zabbix 自动发现(Discovery)功能使用 随着监控主机不断增多,有的时候需要添加一批机器,特别是刚用zabbix的运维人员需要将公司的所有服务器添加到zabbix,如果使用传统办法去单个添 ...

  3. 配置spring所需要的jar包

    spring.jar是包含有完整发布的单个jar 包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到 spring-m ...

  4. python的MD5

    import hashlib def md5(str0): hl = hashlib.md5()# 创建md5对象 hl.update(str0.encode(encoding='utf-8'))#此 ...

  5. Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像

    Windows Server 2003 R2标准版 SP2 64位 (简体中文)官方原版ISO镜像迅雷下载   软件简介 Windows Server 2003 R2标准版是继Windows Serv ...

  6. python 全栈开发,Day63(子查询,MySQl创建用户和授权,可视化工具Navicat的使用,pymysql模块的使用)

    昨日内容回顾 外键的变种三种关系: 多对一: 左表的多 对右表一 成立 左边的一 对右表多 不成立 foreign key(从表的id) refreences 主表的(id) 多对多 建立第三张表(f ...

  7. for循环输出9~0

    示例 for(var i = 9; i>-1;i--){ println(i) } function println(a) { document.write(a+"<br> ...

  8. Asp.Net Core WebAPI入门整理(三)跨域处理

    一.Core  WebAPI中的跨域处理  1.在使用WebAPI项目的时候基本上都会用到跨域处理 2.Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包 3.使用方法简单 ...

  9. php手动搭建wamp环境(一)--之 Windows系统下PHP环境搭建

    1.PHP环境搭建的前提是 Apache HTTP Server (Apache 服务器)已经安装部署成功,并可以正常访问到服务器的主页面.Apache HTTP Server 的安装部署已经在上一篇 ...

  10. 使用共同函数,将PNotify弹出提示框公用

    PNotify(http://sciactive.github.io/pnotify/)是个不错的jquery库(好像最新版的pnotify已不需要jquery了). 使用它来实现网站常用的提示框,很 ...