oracle用case计算分段函数,oracle截取字符串,定索引

转载:https://www.cnblogs.com/qmfsun/p/4493918.html

使用Oracle中Instr()和substr()函数:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符。

其语法为:

instr(sourceString,destString,start,appearPosition).   instr('源字符串' ,'目标字符串' ,'开始位置','第几次出现')

其中sourceString代表源字符串;

destString代表想聪源字符串中查找的子串;

start代表查找的开始位置,该参数可选的,默认为1;

appearPosition代表想从源字符中查找出第几次出现的destString,该参数也是可选的,默认为1;

如果start的值为负数,那么代表从右往左进行查找,但是位置数据仍然从左向右计算。

返回值为:查找到的字符串的位置。

对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:

SQL>select instr('yuechaotianyuechao','ao') positionfrom dual;

POSITION

----------

6

从第7个字符开始搜索

SQL>select instr('yuechaotianyuechao','ao', 7) positionfrom dual;

POSITION

----------

17

从第1个字符开始,搜索第2次出现子串的位置

SQL>select instr('yuechaotianyuechao','ao', 1, 2) positionfrom dual;

POSITION

----------

17
-------------------------------------------------------------
对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:
SQL>select instr('abcdefgh','de') positionfrom dual;
POSITION
----------
4
从1开始算 d排第四所以返回4
SQL>select instr('abcdefghbc','bc',3) positionfrom dual;
POSITION
----------
9
从第3个字符开始算起 第3个字符是c,所以从3开始以后的字符串找查找bc,返回9
---------------------------
从第1个字符开始,查找第2次出现子串的位置
SQL>select instr('qinyinglianqin','qin', 1, 2) positionfrom dual;
POSITION
----------
12
----------------------------------------------------------------------

注意:1。若‘起始位置’=0 时返回结果为0,

2。这里只有三个参数,意思是查找第一个要查找字符的位置(因为 ‘第几次出现’默认为1),

当‘起始位置’不大于要查找的第一个字符的位置时,返回的值都将是第一个字符的位置,如果‘起始位置’大于要查找的第一个字符的位置时,返回的值都将是第2个字符的位置,依此类推……(但是也是以第一个字符开始计数)

substr函数的用法,取得字符串中指定起始位置和长度的字符串  ,默认是从起始位置到结束的子串。

substr(string, start_position, [ length ] )       substr('目标字符串',开始位置,长度)

如:

substr('This is a test', 6, 2)     wouldreturn 'is'

substr('This is a test', 6)     wouldreturn 'is a test'

substr('TechOnTheNet', -3, 3)     wouldreturn 'Net'

substr('TechOnTheNet', -6, 3)     wouldreturn 'The'select substr('Thisisatest', -4, 2) valuefrom dual
SUBSTR()函数  
1.用处:是从给定的字符表达式或备注字段中返回一个子字符串。   
2.语法格式:SUBSTR(cExpression,nStartPosition [,nCharactersReturned])   
其中,cExpression指定要从其中返回字符串的字符表达式或备注字段;
nStartPosition用于指定返回的字符串在字符表达式或备注字段中的位置,
nCharactersReturned用于指定返回的字符数目,缺省时返回字符表达式的值结束前的全部字符。  
3.举例:STORE'abcdefghijlkm' To mystring   
SUBSTR(mystring ,1,5) 显示"abcde" 1 从第一个字符开始 截取的字符中,包括第一个字符 
SUBSTR(mystring ,6) 显示"fghijklm" 
SUBSTR(mystring,-2)显示“km”   最右边一个字符是-1,最右边左边的字符是-2,然后默认是从左向有取剩下的全部的字符
SUBSTR(mystrng,-4)显示“jlkm”

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

oracle截取字符串

将 C3411.907w15 截取点号之前的字符串 C3411    SUBSTR ('C3411.907w15',  0,  INSTR ('C3411.907w15, '.', 1, 1) - 1)

SELECT SUBSTR ('C3411.907w15', 0, INSTR ('C3411.907w15, '.', 1, 1) - 1)

www.2cto.com

FROM DUAL

将 C3411.907w15 截取点号之后 的字符串 907w15   SUBSTR ('C3411.907w15', INSTR ('C3411.907w15','.', 1, 1)+1)

SELECT SUBSTR ('C3411.907w15', INSTR ('C3411.907w15','.', 1, 1)+1)

FROM DUAL

项目应用实例:

原始字符串:

8df18f28745a34cc9df30e34e0afdace.png

原始字段中存在7个“_”,我现在只想取出最后一个“_”后面的字符串,该怎么解决呢?

分两步:

第一步,通过Instr()函数,找到第7个“_”字符:

select instr('Q房网集团_经纪事业部_华南区_深圳世华_营业部_南山前海区_前海中心片区_前海五分店','_', 1, 7) fdisplayname from SHENZHENJM1222.B

或者:

select instr('Q房网集团_经纪事业部_华南区_深圳世华_营业部_南山前海区_前海中心片区_前海五分店', '_', -1, 1) fdisplayname FROM SHENZHENJM1222.B

两者效果一样,下面的-1,表示从右边开始算起始字符,1表示获取第一个“_”

获取到的结果如图:

893b937ba37c9416d97cc9bfe34645d8.png

4bc6606d370b7cdec3cf3110caf3f209.png

第2步,通过substr()函数,取出所需要的字段:

select substr(fdisplayname,instr(fdisplayname,'_',-1,1)+1) fdisplayname from SHENZHENJM1222.B

fdisplayname:代表字段名,相当于元字符串

重点介绍一下+1

+1表示在目标字符串“_”后的第一个字符串开始截取

下面看一下不同的数字的情况:

3d98e243af2023acb9aa15adeaf9fe5c.png

c8eb4c8768f066e45cb6a1f4266c27e3.png

0137fb9b22d721844c1fbed804d759ed.png

select substr(fdisplayname,instr(fdisplayname,'_',-1,1)+1) fdisplayname from SHENZHENJM1222.B

在来看一下instr(fdisplayname,'_',-1,1)中的1是啥意思:

79ff29c504523d2fec413e0c628fe594.png

87763c9d741b85e0db5bcf0757118b35.png

8f5719911b309739491a72fc73623e30.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

Oracle中INSTR和SUBSTR的用法

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)     wouldreturn 'is'

substr('This is a test', 6)     wouldreturn 'is a test'

substr('TechOnTheNet', -3, 3)     wouldreturn 'Net'

substr('TechOnTheNet', -6, 3)     wouldreturn 'The'

select substr('Thisisatest', -4, 2) valuefrom dual

综合应用:

SELECT INSTR('CORPORATE FLOOR','OR', -1, 1)"Instring" FROM DUAL

--INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)

SELECT INSTR('CORPORATE FLOOR','OR', 3, 2)"Instring" FROM DUAL

SELECT INSTR('32.8,63.5',',', 1, 1)"Instring" FROM DUAL

SELECT SUBSTR('32.8,63.5',INSTR('32.8,63.5',',', 1, 1)+1)"INSTRING" FROM DUAL

SELECT SUBSTR('32.8,63.5',1,INSTR('32.8,63.5',',', 1, 1)-1)"INSTRING" FROM DUAL

-- CREATED ON 2008-9-26 BY ADMINISTRATOR

DECLARE

-- LOCAL VARIABLES HERE

T   VARCHAR2(2000);

S   VARCHAR2(2000);

NUM INTEGER;

I   INTEGER;

POS INTEGER;

BEGIN

-- TEST STATEMENTS HERE

T :='12.3,23.0;45.6,54.2;32.8,63.5;';

SELECT LENGTH(T) - LENGTH(REPLACE(T,';','')) INTO NUM FROM DUAL;

DBMS_OUTPUT.PUT_LINE('NUM:' || NUM);

POS := 0;

FOR I IN 1 .. NUM LOOP

DBMS_OUTPUT.PUT_LINE('I:' || I);

DBMS_OUTPUT.PUT_LINE('POS:' || POS);

DBMS_OUTPUT.PUT_LINE('==:' || INSTR(T,';', 1, I));

DBMS_OUTPUT.PUT_LINE('INSTR:' || SUBSTR(T, POS + 1, INSTR(T,';', 1, I) - 1));

POS := INSTR(T,';', 1, I);

END LOOP;

END;

-- Createdon 2008-9-26by ADMINISTRATOR

declare

-- Local variables here

i integer;

T      VARCHAR2(2000);

S      VARCHAR2(2000);

begin

-- Test statements here

--历史状态

T :='12.3,23.0;45.6,54.2;32.8,63.5;';

IF (T IS NOT NULL) AND (LENGTH(T) > 0) THEN

--T := T ||',';

WHILE LENGTH(T) > 0 LOOP

--ISTATUSID := 0;

S         := TRIM(SUBSTR(T, 1, INSTR(T,';') - 1));

IF LENGTH(S) > 0 THEN

DBMS_OUTPUT.PUT_LINE('LAT:'||SUBSTR('32.8,63.5',1,INSTR('32.8,63.5',',', 1, 1)-1));

DBMS_OUTPUT.PUT_LINE('LON:'||SUBSTR('32.8,63.5',INSTR('32.8,63.5',',', 1, 1)+1));

-- COMMIT;

END IF;

T := SUBSTR(T, INSTR(T,';') + 1);

END LOOP;

END IF;

end;

1

2

3

4

5

6

7

8

就是在表中有一个字段,最开始的是[XXXX]字样,我要如何操作,才能获得[]中字符?

select substr('[xxxx]', instr('[xxxx]','[') + 1, instr('[xxxx]',']') - instr('[xxxx]','[') -1 )from dual

您的需要就是去掉[]而获得[]之间的字符对吧

其实很简单,有一个截取字符的函数substr('string',n,m) 其中'string'是目标字符串,n为截取的起始位置,m为结束的位置。

例如:select substr('[xxxx]' , 2, 4)from 表名;意思就是对[xxxx]从第二个位置开始截取4个字符。

结果就是 xxxx
比如数据库有个字段为 tellsid,存储值的格式为
"湖北_5874"  我想单独读取这个字段里下横线后面的部分并转换为数字  要怎么实现啊?
后面数字部分是序列产生的, 前面部分是地区名,都没有固定的长度
首先用instr检查'_'的位置,再substr就ok了。
SELECT to_number(substr(tellsid,
                        instr(tellsid,'_', 1) + 1))
FROM your_tablename;
如果版本是10g以上,试试这个:
SELECT to_number(regexp_substr(tellsid,'[0-9]{1,}', 1))
FROM your_tablename;
regexp_substr('fdaf_4556','[[:digit:]]+'),还是感觉这个好点。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

INSTR

(源字符串, 目标字符串, 起始位置, 匹配序号)

在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始

到字符的结尾就结束。

语法如下:

instr( string1, string2 [, start_position [, nth_appearance ] ] )

参数分析:

string1

源字符串,要在此字符串中查找。

string2

要在string1中查找的字符串.

start_position

代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

nth_appearance

代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意:

如果String2在String1中没有找到,instr函数返回0.

示例:

SELECT instr('syranmo','s') FROM dual; -- 返回 1

SELECT instr('syranmo','ra') FROM dual;  -- 返回 3

1 SELECT instr('syran mo','a',1,2) FROM dual;  -- 返回 0

(根据条件,由于a只出现一次,第四个参数2,就是说第2次出现a的位置,显然第2次是没有再出现了,所以结果返回0。注意空格也算一个字符!)

SELECT instr('syranmo','an',-1,1) FROM dual;  -- 返回 4

(就算是由右到左数,索引的位置还是要看‘an’的左边第一个字母的位置,所以这里返回4)

SELECT instr('abc','d') FROM dual;  -- 返回 0

注:也可利用此函数来检查String1中是否包含String2,如果返回0表示不包含,否则表示包含。

对于上面说到的,我们可以这样运用instr函数。请看下面示例:

如果我有一份资料,上面都是一些员工的工号(字段:CODE),可是我现在要查询出他们的所有员工情况,例如名字,部门,职业等等,这里举例是两个员工,工号分别是’A10001′,’A10002′,其中假设staff是员工表,那正常的做法就如下:

1 2 SELECT  code , name , dept, occupation FROM staff  WHERE code IN ('A10001','A10002');

或者:

SELECT  code , name , dept, occupation FROM staff  WHERE code ='A10001' OR code ='A10002';

有时候员工比较多,我们对于那个’觉得比较麻烦,于是就想,可以一次性导出来么?这时候你就可以用instr函数,如下:

SELECT  code , name , dept, occupation FROM staff  WHERE instr('A10001,A10002',code)>0;

查询出来结果一样,这样前后只用到两次单引号,相对方便点。

还有一个用法,如下:

SELECT code, name, dept, occupation  FROM staff  WHERE instr(code,'001') > 0;

等同于

SELECT code, name, dept, occupation  FROM staff  WHERE code LIKE'%001%' ;

instr(string1,string2[,start_position[,nth_appearence]])

string1:要在此字符串中查找。

string2:要在string1中查找的字符串。

start_position:从string1开始查找的位置。可选,默认为1,正数时,从左到右检索,负数时,从右到左检索。

nth_appearence:查找第几次出现string2。可选,默认为1,不能为负。

注:如果没有查找到,返回0。

例如:

select instr('abcd','a') from dual;  --返回1 select instr('abcd','c') from dual;  --返回3 select instr('abcd','e') from dual;    --返回0

该函数可以用于模糊查询以及判断包含关系:

例如:

① select code, name, dept, occupation  from staff  where instr(code, '001') > 0;

等同于

select code, name, dept, occupation  from staff  where code like '%001%' ;

② select ccn,mas_loc from mas_loc where instr('FH,FHH,FHM',ccn)>0;

等同于

select ccn,mas_loc from mas_loc where ccn in ('FH','FHH','FHM');

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

INSTR(源字符串, 目标字符串, 起始位置, 匹配序号) :

在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。

一、语法如下:

instr( string1, string2 [, start_position [, nth_appearance ] ] )

1>参数分析:

①string1:源字符串,要在此字符串中查找。

②string2:要在string1中查找的字符串.

③start_position:代表string1 的哪个位置开始查找。

注:此参数可选,如果省略默认为1. 字符串索引从1开始。

如果此参数为正,从左到右开始检索。

如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

④nth_appearance:代表要查找第几次出现的string2.

注:此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意:如果String2在String1中没有找到,instr函数返回0.

2>示例:

SELECT instr('syranmo','s') FROM dual; -- 返回 1

SELECT instr('syranmo','ra') FROM dual; -- 返回 3

SELECT instr('syran mo','a',1,2) FROM dual; -- 返回 0

SELECT instr('syranmo','an',-1,1) FROM dual; -- 返回 4

SELECT instr('abc','d') FROM dual; -- 返回 0

二、其他应用实例:

1>从staff表查询工号code分别是’A10001′,’A10002′的员工:

①SELECT code , name , dept, occupation FROM staff WHERE code IN ('A10001','A10002');

②SELECT code , name , dept, occupation FROM staff WHERE code ='A10001' OR code ='A10002';

③SELECT code , name , dept, occupation FROM staff WHERE instr('A10001,A10002',code)>0;

这种用法时常被用于存储过程,将范围字符串作为参数传入。如果使用①的SQL写法,将拼好的字符串传入直接使用,则存储过程会报错。此时会用这种方法查找,传入的拼好字符串便可直接使用。

2>模糊查询:

①SELECT code, name, dept, occupation FROM staff WHERE code LIKE'%001%' ;

②SELECT code, name, dept, occupation FROM staff WHERE instr(code,'001') > 0;

简述

今天在写 sql时遇到一个情况,表 A中的 ID 是按照 TREE结构存储的。现在需要和表 B中的 NODE_ID连接,取出 B中 NODE_ID可以和 A中任意一个 level的 NODE_ID连接的信息。但是表 B中的 NODE_ID 具体对应到表 A中哪个 level是未知的。对此,最先想到使用的是 OR运算,但是由于效率太低,速度很慢,后来使用 INSTR代替,查询速度得到明显提高。

表结构

表 A - A_SEQ_ID, LVL1_NODE_ID, LVL2_NODE_ID, LVL3_NODE_ID, LVL4_NODE_ID, LVL5_NODE_ID, LVL6_NODE_ID, LVL7_NODE_ID, LVL8_NODE_ID, LVL9_NODE_ID, LVL10_NODE_ID

表 B - B_SEQ_ID, NODE_ID, INFO

开始时的 sql

01.SELECT *

02.FROM A, B

03.WHERE A.LVL1_NODE_ID = B.NODE_ID OR

04.A.LVL2_NODE_ID = B.NODE_ID OR

05.A.LVL3_NODE_ID = B.NODE_ID OR

06.A.LVL4_NODE_ID = B.NODE_ID OR

07.A.LVL5_NODE_ID = B.NODE_ID OR

08.A.LVL6_NODE_ID = B.NODE_ID OR

09.A.LVL7_NODE_ID = B.NODE_ID OR

10.A.LVL8_NODE_ID = B.NODE_ID OR

11.A.LVL9_NODE_ID = B.NODE_ID OR

12.A.LVL10_NODE_ID = B.NODE_ID;

这条 sql虽然可以达到最终的目的,但是由于表 A和表 B的数据量比较大,所以执行起来相当慢。

使用 Instr函数

1.SELECT *

2.FROM A, B

3.WHERE instr(

4.(','||A.LVL1_NODE_ID||','||A.LVL2_NODE_ID||','||A.LVL3_NODE_ID||

5.','||A.LVL4_NODE_ID||','||A.LVL5_NODE_ID||','||A.LVL6_NODE_ID||

6.','||A.LVL7_NODE_ID||','||A.LVL8_NODE_ID||','||A.LVL9_NODE_ID||

7.','||A.LVL10_NODE_ID),

8.','||B.NODE_ID||',') >0;

比起 OR语句一个字段一个字段的比较,instr函数更加高效。当 instr函数匹配到子串的时候就会返回子串在源字符串中的位置,所以这里用 大于0 即表示在表 A的源字符串中可以找到表 B的 NODE_ID (子串或源字符串为 NULL时返回 NULL)。

注:给每个字段加上逗号(',')的原因是匹配的一种方法,例如源数据是 1,2,3,13. 子串是 23.如果直接拼接的话,源字符串就变成 '12313',用instr('12313', '23') 明显可以匹配成功,但事实并非如此。所以换成给每个字符两边都加上逗号,不仅匹配字符也匹配其两边的逗号 - instr(',1,2,3,13,', '23')。

Oracle Instr 函数

f67de7952013a0bb487e9fc19202d27b.gif

其中: INSTR   接受 characters格式的输入字符集,返回 characters格式的子串位置,位置索引从 1开始; INSTRB 使用 bytes 而非 characters; INSTRC 使用 Unicode complete characters; INSTR2 使用UCS2 code points; INSTR4 使用UCS4 code points。

对于源字符串,除了INSTRC, INSTR2, 和 INSTR4 不允许CLOB 和 NCLOB 类型外,其他两个函数的源字符串接受CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB 或 NCLOB等任意数据类型。

instr 语法如下:instr( string1, string2, start_position,nth_appearance )

string1

源字符串,要在此字符串中查找。

string2

要在string1中查找的字符串 。

start_position

代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。

nth_appearance

代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。

注意:   如果String2在String1中没有找到,instr函数返回0。   示例:   SELECT instr('syranmo','s') FROM dual; -- 返回 1   SELECT instr('syranmo','ra') FROM dual; -- 返回 3   SELECT instr('syran mo','a',1,2) FROM dual; -- 返回 0

16c4e1ff2e075ea51957479c446570c7.png

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

oracle 截取字符(substr),检索字符位置(instr)case when thenelse 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

2

3

oralce查询字符串截取

select substr('XIHE@GXCOURT.GX',instr('XIHE@GXCOURT.GX','@')+1)from dual

字段loginname='XIHE@GXCOURT.GX'截取@后面的内容不包括@
sql :charindex('字符串',字段)>0 charindex('administrator',MUserID)>0
oracle:instr(字段,'字符串',1,1) >0 instr(MUserID,'administrator',1,1)>0
在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识。
Oracle中,可以使用 Instr
函数对某个字符串进行判断,判断其是否含有指定的字符。
其语法为:
Instr(string, substring, position,
occurrence)
其中
string:代表源字符串;
substring:代表想聪源字符串中查找的子串;
position:代表查找的开始位置,该参数可选的,默认为 1;
occurrence:代表想从源字符中查找出第几次出现的substring,该参数也是可选的,默认为1;
如果 position
的值为负数,那么代表从右往左进行查找。
返回值为:查找到的字符串的位置。
对于 Instr
函数,我们经常这样使用:从一个字符串中查找指定子串的位置。
例如:
SELECT Instr('Hello Word',
'o', -1, 1)"String" FROM Dual 的显示结果是
Instring
————
8

Oracle 截取字符串(截取固定分隔符中间的字符

#### Oracle 截取字符串(截取固定分隔符中间的字符) #### ####  oracle 取固定分隔符之间的字符--方法一 substr+ instrSELECT  substr('12JP ...

Oracle截取字符串函数和查找字符串函数,连接运算符||

参考资料:Oracle截取字符串和查找字符串 oracle自定义函数学习和连接运算符(||) oracle 截取字符(substr),检索字符位置(instr) case when then else ...

Oracle截取字符串和查找字符串

oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用 收藏 常用函数:substr和instr 1.SUBSTR(string,s ...

ORACLE截取字符串

 每行显示固定字符串,截取字符串 方法一:在循环里面输出 DECLARE   l_char          VARCHAR2 (3000 ) := 'ORACLEEB电子商务套件SSYSTEMg ...

oracle截取字符串区间段的一部分字符串

Oracle SQL中实现indexOf和lastIndexOf功能,substr和instr用法 博客分类: oracle PL/SQL instrsubstrlastindexofindexofo ...

oracle截取字符串去掉字段末尾指定长度的字符

lengthb(string)计算string所占的字节长度:返回字符串的长度,单位是字节 length(string)计算string所占的字符长度:返回字符串的长度,单位是字符 eg: //去掉该 ...

[转]Oracle截取字符串相关函数

转至:http://www.cnblogs.com/qmfsun/p/4493918.html 1.instr(sourceString,destString,start,appearPosition ...

Oracle 截取字符串

如下有一个创建函数的代码,是将一穿字符串按照逗号‘,’分割成若干段 create or replace function SplitStringByComma(aName in varchar2) r ...

oracle截取字段中的部分字符串

使用Oracle中Instr()和substr()函数: 在Oracle中可以使用instr函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为: instr(sourceString,de ...

随机推荐

MyBatis Like查询处理%_符号

如果我们数据库中存的字段包含有"%_"这两个like查询的通配符,那么在查询的时候把"%_"当作关键字是查询不出来的,因为mybatis会把这两个字符当作通配符 ...

Python os 标准库使用

os模块是python自带的一个核心模块,用于和操作系统对象进行交互. 1.导入模块获取帮助 >>> import os>>> help(os)>>&g ...

解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题

解决Tomcat7“At least one JAR was scanned for TLDs yet contained no TLDs”问题 2013-12-05 21:58:00|  分类: t ...

Hibernate 的dialect 大全

RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS3 ...

LaunchCharacter

/** Set a pending launch velocity on the Character. This velocity will be processed on the next Char ...

LintCode "Count of Smaller Number before itself"

Warning: input could be > 10000... Solution by segment tree: struct Node { Node(), left(nullptr), ...

6.5 THUSC 考试题解

QAQ 由于并没有数据,而且没有A掉的是提交答案题目,所以并没有修改 QAQ 只能放题解了,代码还没有拿到,不过在清华听了一波习题讲评的安利 第一题 成绩单 先说暴力分 对于单调序列来说最优决策一定是 ...

Java Concurrency - java.util.concurrent API Class Diagram

摘自: www.uml-diagrams.org Here we provide several UML class diagrams for the Java™ 7 java.util.concur ...

ASP.NET全局文件与防盗链

添加Web→全局应用程序类,注 文件名不要改 Global.asax 全局文件是对Web应用声明周期的一个事件响应的地方,将Web应用启动时初始化的一些代码写到 Application_Start中, ...

《Python自然语言处理》第二章-习题解答-练习6

问题描述:在比较词表的讨论中,创建一个对象叫做translate,通过它你可以使用德语和意大利语词汇查找对应的英语词汇.这种方法可能会出现什么问题,你能提出一个办法来避免这个问题吗? 虽然这是一道初级 ...

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值