文档章节

Oracle 字符串查询以及拆分函数

Oscarfff
 Oscarfff
发布于 2016/11/01 15:32
字数 654
阅读 61
收藏 1
select id,SUBSTR(detail,INSTR(detail,'hijk')+5,Instr(detail,';abcd=')-INSTR(detail,'def')-5)
from(
select a.id,a.detail,a.file
from table_a
where not exists(
select/*+index(b id)*/ id  ##带上所有查询,注意如果用别名,那么表名也用别名
from
table_b b
where b.id=a.id
)
)
where file like '%xxxxxx%'

其中有两个函数需要注意一下:

第一是 INSTR

可以有四个参数

第一是数据源,第二是要查询的字符串,第三是起始位置,第四是出现次数

INSTR( source_string, substring [, start_position [, occurrance ] ] )
INSTR('Welcome to PSOUG.org', 'o')        would return 5   (Finds the first occurrence of 'o')

INSTR('Welcome to PSOUG.org', 'o', 1, 1)  would return 5.  (Finds the first occurrence of 'o')

INSTR('Welcome to PSOUG.org', 'o', 1, 2)  would return 10. (Finds the second occurrence of 'o')

INSTR('Welcome to PSOUG.org', 'o', 1, 3)  would return 18. (Finds the third occurrence of 'o')

INSTR('Welcome to PSOUG.org', 'o', -2, 2) would return 10. (Count back 2, then find the 2nd 'o')

INSTR 可以控制查询要搜索的字符串,并且返回出现的位置。

要注意的地方

  1. Both source_string and substring can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The value returned is of NUMBER datatype.
     
  2. Both start_position and occurrence must be an integer of datatype NUMBER, or any datatype that can be implicitly converted to NUMBER.
     
  3. The first position in the source_string is 1, not 0. 没有要查询的字符串的时候,返回0
  4. The INSTR search is case sensitive.

http://psoug.org/definition/INSTR.htm

第二是SUBSTR 

有三个参数,第一是数据源,第二是起始位置,第三是长度

参考博文:

https://docs.oracle.com/cd/B28359_01/olap.111/b28126/dml_functions_2101.htm#OLADM679

SUBSTR functions

The SUBSTR functions (SUBSTR, SUBSTRB, SUBSTRC, SUBSTR2, and SUBSTR4) return a portion of string, beginning at a specified position in the string. The functions vary in how they calculate the length of the substring to return.

  • SUBSTR calculates lengths using characters as defined by the input character set.

  • SUBSTRB calculates lengths using bytes.

  • SUBSTRC calculates lengths using Unicode complete characters.

  • SUBSTR2 calculates lengths using UCS2 code points.

  • SUBSTR4 calculates lengths using UCS4 code points.

Return Value

The return value is the same data type as string.

Syntax

{SUBSTR | SUBSTRB | SUBSTRC | SUBSTR2 | SUBSTR4}(char, position [, substring_length ])

Arguments

string

A text expression that is the base string from which the substring is created.

position

The position at which the first character of the returned string begins.

  • When position is 0 (zero), then it is treated as 1.

  • When position is positive, then the function counts from the beginning of string to find the first character.

  • When position is negative, then the function counts backward from the end of string.

substring_length

The length of the returned string. SUBSTR calculates lengths using characters as defined by the input character set. SUBSTRB uses bytes instead of characters. SUBSTRC uses Unicode complete characters. SUBSTR2 uses UCS2 code points. SUBSTR4 uses UCS4 code points.

When you do not specify a value for this argument, then the function returns all characters to the end of string. When you specify a value that is less than 1, the function returns NA.

Examples

Example 8-120 Retrieving a Charachter Substring

The following example returns several specified substrings of "abcdefg".

SHOW SUBSTR('abcdefg',3,4) 
cdef

SHOW SUBSTR('abcdefg',-5,4) 
cdef

Example 8-121 Retrieving a Substring Using Bytes

Assume a double-byte database character set.

SHOW SUBSTRB('abcdefg',5,4.2) 
cd

© 著作权归作者所有

Oscarfff
粉丝 74
博文 816
码字总数 97116
作品 0
崇明
后端工程师
私信 提问
Oracle 行转列pivot 、列转行unpivot 的Sql语句总结

转自:http://blog.csdn.net/xiaokui_wingfly/article/details/42419207 多行转字符串 这个比较简单,用||或concat函数可以实现 实际上就是拆分字符串的问题,可以使用 substr、instr、regex...

Amui
2016/06/29
373
0
Oracle中REGEXP_SUBSTR函数

Oracle中REGEXPSUBSTR函数 Oracle中REGEXPSUBSTR函数的使用说明: 题目如下: 在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合。 REGEXPSUBSTR函数格式如下: functi......

买个ZIPPO点蚊香
2015/12/11
29
0
Oracle常识基础(一)

一.Oracle数据类型 1.字符数据类型 .> char:可以存储字母数字值,长度在1到2000个字节。 .> varchar2:存储可变长度的char类型字符串,大小在1到4000个字节范围内。 .> long:存储可变长度的字符...

技术小胖子
2017/11/02
0
0
【书评:Oracle查询优化改写】第五至十三章

【书评:Oracle查询优化改写】第五至十三章 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩...

技术小胖子
2017/11/15
0
0
oracle如何拆分以逗号分隔的字符串为多列?

最近遇到一个问题,需要把一个带有,的字符串拆分成多列。通过查询资料,这个操作需要使用以下2个关键知识: 1. REGEXP_SUBSTR函数 这个函数的作用是正则分隔字符串,用法为 function REGEXP_...

youfen
2018/07/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

阿里技术男的成长史:越想证明自己死得越快……

在上海工作8年后,身为部门经理的钱磊,管理着一家ERP公司的百十来号员工,“再往上爬就是老板和他儿子了……从这个领域的技术角度来讲算是做到了顶。”05年,钱磊就开始关注一家名字奇怪,做...

阿里云官方博客
31分钟前
3
0
jquery的选择器之-表单对象属性过滤选择器

<!DOCTYPE html><html><head><meta charset="UTF-8"><title>表单对象属性过滤选择器</title><script type="text/javascript" src="jquery-1.7.2.js"></script><script......

architect刘源源
31分钟前
1
0
[报名中]云+开发者大会武汉站-漫谈数据平台与智能应用

| 导语 6月2日,武汉世茂希尔顿酒店,腾讯云邀您参加云+开发者大会(武汉站),与技术大咖们漫谈数据平台与智能应用,洞察数据,启迪智能。 大数据与人工智能时代,新的数据智能平台技术及其...

腾讯云开发者社区
35分钟前
4
0
Linux系统打开文件最大数量限制(进程打开的最大文件句柄数设置)

ulimit [-HSTabcdefilmnpqrstuvx [limit]] 利用ulimit命令可以对资源的可用性进行控制。 -H选项和-S选项分别表示对给定资源的硬限制(hard limit)和软限制(soft limit)进行设置。 硬限制(...

BryceLoski
35分钟前
2
0
C++写入utf-8带BOM文件

/** * 为了能让3ds max 的打包zip程序能够读取txt列表文件. * 必须要能写入utf-8带BOM的txt文件. * 关键代码是用wstring_convert把wstring转成string * 之前试过wfstream , 直接就没法写...

洛克人杰洛
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部