1、INSTR函数
语法:
instr( string1, string2 [, start_position [, nth_appearance ] ] )
参数:
string1:源字符串,要在此字符串中查找。
string2:要在string1中查找的字符串.
start_position:代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符串索引从1开始。如果此参数为正,从左到右开始检索,如果此参数为负,从右到左检索,返回要查找的字符串在源字符串中的开始索引。
nth_appearance:代表要查找第几次出现的string2. 此参数可选,如果省略,默认为 1.如果为负数系统会报错。
样例:
1
|
SELECT
INSTR(
'Hello World!'
,
'l'
)
FROM
dual;
|
结果:3
1
|
SELECT
INSTR(
'Hello World!'
,
'l'
,4,2)
FROM
dual;
|
结果:10
--可利用此函数来检查String1中是否包含String2,如果返回0表示不包含,否则表示包含
1
|
SELECT
INSTR(
'Hello World!'
,
'World'
)
FROM
dual;
|
结果:7
--假设员工表staff,包含工号,名字,部门,职业等等
--检索工号分别是’A10001′,’A10002′的员工的名字,部门,职业信息
1
|
SELECT
code ,
name
, dept, occupation
FROM
staff
WHERE
code
IN
(
'A10001'
,
'A10002'
);
|
或:
1
|
SELECT
code ,
name
, dept, occupation
FROM
staff
WHERE
code =
'A10001'
OR
code =
'A10002'
;
|
等效:
1
|
SELECT
code ,
name
, dept, occupation
FROM
staff
WHERE
instr(
'A10001,A10002'
,code)>0;
|
备注:减少单引号的个数
--模糊查询
1
|
SELECT
code,
name
, dept, occupation
FROM
staff
WHERE
code
LIKE
'%001%'
;
|
等效:
1
|
SELECT
code,
name
, dept, occupation
FROM
staff
WHERE
instr(code,
'001'
) > 0;
|
2、SUBSTR函数
语法:
substr( string, start_position, [ length ] )
参数:
string:要截取的字符串
start_position:截取开始位置
length:截取长度
样例:
1
|
SELECT
SUBSTR(
'Hello World!'
,3)
FROM
dual;
|
结果:llo World!
1
|
SELECT
SUBSTR(
'Hello World!'
,3,6)
FROM
dual;
|
结果:llo Wo
1
|
SELECT
SUBSTR(
'Hello World!'
,0)
FROM
dual;
|
结果:Hello World!
1
|
SELECT
SUBSTR(
'Hello World!'
,1)
FROM
dual;
|
结果:Hello World!
1
|
SELECT
SUBSTR(
'Hello World!'
,-0)
FROM
dual;
|
结果:Hello World!
1
|
SELECT
SUBSTR(
'Hello World!'
,-1)
FROM
dual;
|
结果:!
1
|
SELECT
SUBSTR(
'Hello World!'
,-5)
FROM
dual;
|
结果:orld!
本文转自 stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1424508