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

SQL> select instr('oracle','or') position from dual;

POSITION

----------

从字符串'oracle'的第一个位置开始,向后查找第一个出现子串'or'出现的位置。

其实instr共有4个参数,格式为“instr(string, substring, startposition, occurrence)”。可实现子串的如下搜索:

1.从指定位置开始搜索子串

2.指定搜索第几次出现的子串的位置

3.从后向前搜索

--1.从第3个字符开始搜索

SQL> select instr('oracleor','or', 3) position from dual;

POSITION

----------

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

SQL> select instr('oracleor','or', 1, 2) position from dual;

POSITION

----------

--3.从倒数第1个字符开始,搜索第1次出现子串的位置

SQL> select instr('oracleor','or', -1, 1) position from dual;

POSITION

----------

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

SQL> select instr('oracleor','or', -1, 2) position from dual;

POSITION

----------

oracle用instr代替like

表中将近有100万数据,很多时候,我们要进行字符串匹配,在SQL语句中,我们通常使用like来达到我们搜索的目标。但经过实际测试发现,like的效率与instr函数差别相当大。下面是一些测试结果:

SQL> set timing on
SQL> select count(*) from t where instr(title,’oracle’)>0;

COUNT(*)
———-
5478

Elapsed: 00:00:11.04
SQL> select count(*) from t where title like ‘%oracle%’;

COUNT(*)
———-
5478

Elapsed: 00:00:31.47
SQL> select count(*) from t where instr(title,’oracle’)=0;

COUNT(*)
———-
994530

Elapsed: 00:00:11.31
SQL> select count(*) from t where title not like ‘%oracle%’;

COUNT(*)
———-
994530

instr(title,'oracle’)>0 相当于like

instr(title,'oracle’)=0 相当于not like

oracle instr函数对于instr函数,我们经常这样使用:从一个字符串中查找指定子串的位置。例如:SQL> select instr('oracle','or') position from dual;POSITION----------        1从字符串'oracle'的第一个位置开始,向后查找第一个出现子串'or'出现的位置。其实instr共
instr (title,'手册')>0 相当于 title like '%手册%' instr (title,'手册')=1 相当于 title like '手册%' instr (title,'手册')=0 相当于 title not like '%手册%' t表中将近有1100万数据,很多时候,我们要进行字符串匹配,在 SQL 语句中,我们通常使用like来达到我们搜索的目标。但经过实际 测试 发现,like的效率与 instr 函数 差别相当大。下面是一些 测试 结果: SQL > set timing on SQL > select count(*) from t where instr (tit
一、my Sql 中IFNULL的使用说明 IFNULL(expr1,expr2) 如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值 二、concat的使用说明 my sql CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多...
SQL 中经常会遇到模糊查询,现在模糊查询正常、最常用的有两种,一种是like、另一种是 instr ,这两种单单是简单的搜索, instr 的效率是比like要高的(这也得看%在哪儿了)。 like中分右模糊、左模糊,右模糊比如’abc%‘时,扫描索引,高效。当模糊查询含左模糊时,比如’%abc’,进行全表扫描,低效。当然更别提’%abc%'了。 instr instr (字段名, string), instr 的使用也很简单,就是填写一下字段名,然后与后面需要查找的内容相关。这个比like的左模糊效率
1、 instr 函数 instr 函数 是一个字符串处理 函数 ,它在 Oracle /PL SQL 中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0。 instr 函数 定义如下: * 返回子字符串在源字符串中的位置(字符串位置从1开始,而不是从0开始) * @param str 源字符串 * @param substr 子字符串 * @para...
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查询时,以’%'开头
下面我们使用 Oracle 来使用LIKE语句来查询数据,LIKE语句可以选择类似的值,它其中的%就代表着一个零或者多个字符,_代表一个字符,%与_可以同时使用,LIKE语句并且可以和ESCAPE标识符选择%和_符号一起使用。下面这个例子是使用LIKE语言模糊的查询工种的ID是“IT”的。 下面是LIKE使用的截图: 下面我们使用 Oracle 来使用LIKE语句来查询数据,LIKE语句可以选择类似的值...
Oracle 数据库提供的工具 函数 instr ,用于查找字符串的位置。此 函数 经常使用到,但使用的时候需要注意一些事项,接下来进行具体说明。 首先,我们了解下 函数 instr ,它有四个参数;source, target [, start_position] [, nth_appearance ]; source为原字符串; target为要查找的字符串; start_position为开始位置,可选项; nth_appearance为匹配序号,即target第几次出现的位置...
oracle 函数 可以分为基本 函数 和分析 函数 两大类,在联机事务处理系统中,基本 函数 的使用非常多;而在以数据仓库为基础的数据分析中, 除了基本 函数 ,也会用到分析 函数 。1.ASCII(c1):c1表示一个字符串,此 函数 返回c1首字母及特殊字符的ASCII码,其逆 函数 为CHR(). SQL > select ASCII('a') ascii_a from dual; ASCII_A ----------
今天处理复杂业务,发现需要查出A表中的a字段存在B表中的b字段,不想写Java代码处理,尝试使用 sql 语句处理,发现 INSTR 可以处理这种场景业务。 举个 sql 栗子: SELECT DISTINCT Q1.id, Q1. CODE, Q1.codeRepty queryreptycode AS Q1 INNER JOINqueryreptycode AS Q2 WHERE INSTR ( Q1.`code`, Q2.codeRepty
INSTR (STR,SUBSTR) 在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX); STR 被搜索的字符串 ,SUBSTR 希望搜索的字符串 。 结论:在字符串STR里面,字符串SUBSTR出现的第一个位置(INDEX),INDEX是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。 LIKE匹配关键字 注意:"[]"通配符My Sql 不支持 INSTR 和 LIKE 的使用 (1) instr >0 和like、 instr =0 和no
Oracle 中like是经常用到的,但是对于数据比较多的查询使用like这种模糊查询效率会比较低,所以可以尝试用 instr 代替 like进行查询。用法: instr (‘源字符串/列名’,’目标字符串’) >0 相当于 like instr (‘源字符串/列名’,’目标字符串’) = 0 相当于 not like 另外,对于大小写不固定的like也可以用regexp_like
**语法: instr (sourceString,destString,start,appearPosition) instr (’源字符串’ , ‘目标字符串’ ,’开始位置’,’第几次出现’)** 1.sourceString代表源字符串; destString代表要从源字符串中查找的子串; 2.start代表查找的开始位置,这个参数可选的,默认为1; 3.appearPositio...
select c.ci_id,wm_concat(s.stu_name) from pm_ci c,pm_stu s where instr (c.stu_ids,s.stu_id)>0 group by ci_id
在一些查询时,可能把握不准需要查询的确切值,比如百度搜索时输入关键字即可查询出相关的结果,这种查询称为模糊查询。 模糊查询使用LIKE关键字通过字符匹配检索出所需要的数据行。字符匹配操作可以使用通配符“%”和“_”: %:表示零个或者多个任意字符。_:代表一个任意字符。 语法是:LIKE '字符串'[ESCAPE '字符']。匹配的字符串中,ESCAPE后面的“字符”作为转义字符。 通配符表达...
在 Postgre SQL 中,可以使用 strpos 函数 来实现类似于 Oracle instr 函数 的功能。例如,可以使用以下语句来查找字符串 'hello world' 中是否包含子字符串 'world': SELECT strpos('hello world', 'world'); 该语句将返回子字符串 'world' 在字符串 'hello world' 中的起始位置,如果子字符串不存在,则返回 。