1、instr函数
instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0。
instr函数定义如下:
/*
* 返回子字符串在源字符串中的位置(字符串位置从1开始,而不是从0开始)
* @param str 源字符串
* @param substr 子字符串
* @param position 检索位置,可省略(默认为1),参数为正时,从左向右检索,参数为负时,从右向左检索
* @param occurrence 检索子串出现次数(即子串在源串第几次出现),可省略(默认为1),值只能为正整数,否则会报错
* @return 返回子字符串在源字符串中出现的位置(没找到返回0)
*/
instr(str, substr, position, occurrence);
SELECT INSTR('hello world', 'l') FROM DUAL; --结果:3
SELECT INSTR('hello world', 'l', 5) FROM DUAL; --结果:10 (从左向右第5位开始检索'l'在'hello world'中出现的位置)
SELECT INSTR('hello world', 'l', -1) FROM DUAL; --结果:10 (从右向左第1位开始检索'l'在'hello world'中出现的位置)
SELECT INSTR('hello world', 'l', 2, 2) FROM DUAL; --结果:4 (从左向右第2位开始检索'l'在'hello world'中第2次出现的位置)
SELECT INSTR('hello world', 'l', -3, 3) FROM DUAL; --结果:0 (从右向左第3位开始检索'l'在'hello world'中第3次出现的位置)
2、like关键字
like关键字也可称为通配符,在SQL中用于模糊查询。可以使用“%”和“_”通配符,其中“%”代表0个或多个字符,“_”代表1个字符。
例如:
SELECT * FROM STUDENTTAB WHERE STUNAME LIKE '%张%'; --在STUDENTTAB表中查询STUNAME中含有字符“张”的学员
SELECT * FROM STUDENTTAB WHERE STUNAME LIKE '张_'; --在STUDENTTAB表中查询STUNAME中以“张”开头,名字长度为2的学员(即“张三”、“张四”,而不会检测出“张三三”)
3、instr和like的使用:
SELECT * FROM STUDENTTAB WHERE STUNAME LIKE '%张%';
就相当于
SELECT * FROM STUDENTTAB WHERE INSTR(STUNAME, '张') > 0;
SELECT * FROM STUDENTTAB WHERE STUNAME NOT LIKE '%张%';
就相当于
SELECT * FROM STUDENTTAB WHERE INSTR(STUNAME, '张') = 0;
4、总结
<1> instr>0 和like、instr=0 和not like 一般来说查询的结果相同(不考虑特殊字符)
<2> instr是一个函数,可以建立函数索引,如果过滤的条件有索引,那么instr就可以提高性能。
<3> like查询时,以'%'开头,列所加的索引是不起作用的。
<4> 在没有索引的前提下,当数据量比较大时,instr要比like效率高。
1、instr函数 instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0。instr函数定义如下: /* * 返回子字符串在源字符串中的位置(字符串位置从1开始,而不是从0开始) * @param str 源字符串 * @param substr 子字符串 ...
INSTR
(源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PL
SQL
中
,
instr
函数
返回要截取的字符串在源字符串
中
的位置。只检索一次,就是说从字符的开始到字符的结尾就结束。 语法如下:
instr
( string1, string2 [, start_position [, nth_appearance ] ] ) 参数分析: string1 源字符串,要在此字符串
中
查找。 string2 要在string1
中
查找的字符串. start_position 代表string1 的哪个位置开始查找。此参数可选,如果省略默认为1. 字符
最近有个需求是对
sql
的结果集list进行排序,因为list默认查出的结果排序是按该表id索引的顺序查找的,所以顺序也是按索引顺序排列,如果想让list按自己的结果显示,那么有两个方法:
1,将in语句拆成 union 的方法,此处就不多说了
2,在网上看到
instr
的
函数
来进行排序,这里我想要说的是在hql
中
拼接该语句时候赢注意的问题
先看一下 例句:
SELECT * F
格式一:
instr
( string1, string2 ) /
instr
(源字符串, 目标字符串)
格式二:
instr
( string1, string2 [, start_position [, nth_appearance ] ] ) /
instr
(源字符串, 目标字符串, 起始位置, 匹配序号)
解析:string2 的值要在string1
中
查找,是从start_p...
转自:doshre
1)
instr
()
函数
的格式 (俗称:字符查找
函数
)
INSTR
( string, substring [, start_position [, th_appearance ] ] )
string - 要搜索的字符串。字符串可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB等类型。
substring - 要在字符串(string)
中
搜索的子字符串。 子字符串可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCL
**语法:
instr
(sourceString,destString,start,appearPosition)
instr
(’源字符串’ , ‘目标字符串’ ,’开始位置’,’第几次出现’)**
1.sourceString代表源字符串; destString代表要从源字符串
中
查找的子串;
2.start代表查找的开始位置,这个参数可选的,默认为1;
3.appearPositio...
instr
(源字符串, 目标字符串, 起始位置, 匹配序号)
在Oracle/PL
SQL
中
,
instr
函数
返回要截取的字符串在源字符串
中
的位置。只检索一次,就是说从字符的开始
到字符的结尾就结束。
语法如下:
instr
( string1, string2 [, start_position [, nth_appeara
格式一:
instr
( string1, string2 ) //
instr
(源字符串, 目标字符串)
注:在Oracle/PL
SQL
中
,
instr
函数
返回要截取的字符串在源字符串
中
的位置。只检索一次,也就是说从字符的开始到字符的结尾就结束。
1 select
instr
('helloworld','l') from dual; --返回结果:3 默认第一次出现“l”的位置
–
instr
(HXJYLSH,‘A’)效率和LIKE效率比较
SELECT COUNT() FROM EAST3_NBFHZMXJL_OI WHERE
instr
(HXJYLSH,‘A’)>0; --294.14
SELECT COUNT() FROM EAST3_NBFHZMXJL_OI WHERE HXJYLSH LIKE ‘%A%’; --310.91
(1)
instr
是一个
函数
,可以建立
函数
索引,如果过滤条件有索引,那么
instr
的效率将大幅度提高;
(2)like查询时,以’%'开头
My
SQL
中
的
INSTR
函数
用于查找一个字符串
中
是否包含另一个字符串,并返回第一个字符串
中
第一个匹配字符串的位置。例如,
INSTR
('hello world', 'world')将返回7,因为'world'在'hello world'
中
的第7个位置。
而LIKE是用于在My
SQL
中
进行模糊匹配的操作符。它可以用来匹配一个字符串
中
的一部分,而不是整个字符串。例如,SELECT * FROM table WHERE name LIKE '%john%'将返回所有名字
中
包含'john'的行。LIKE操作符可以
使用
通配符来匹配任意字符,例如'%'表示匹配任意字符,而'_'表示匹配单个字符。
IDEA更细项目时报error: could not read ‘.git/rebase-apply/head-name‘: No such file or directory
Git上新建的分支IDEA找不到
Cdf(人名):
SQL中instr和like的使用区别
APTX_4896: