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(人名): 写的好,很nice,期待大佬回访! SQL中instr和like的使用区别 APTX_4896: 对索引字段使用函数后仍然可以使用索引吗?不会破坏索引?我这边创建索引但是没有什么显著效果。