SQL中Charindex和Oracle中对应的函数Instr对比

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

(0)

相关推荐

  • Oracle中instr函数使用方法

    INSTR (源字符串, 目标字符串, 起始位置, 匹配序号) 在Oracle/PLSQL中,instr函数返回要截取的字符串在源字符串中的位置.只检索一次,就是说从字符的开始到字符的结尾就结束. 语法如下: instr( string1, string2 [, start_position [, nth_appearance ] ] ) 参数分析: string1 源字符串,要在此字符串中查找. string2 要在string1中查找的字符串. start_position 代表string

  • oracle使用instr或like方法判断是否包含字符串

    首先想到的就是contains,contains用法如下: select * from students where contains(address, 'beijing') 但是,使用contains谓词有个条件,那就是列要建立索引,也就是说如果上面语句中students表的address列没有建立索引,那么就会报错. 好在我们还有另外一个办法,那就是使用instr,instr的用法如下: select * from students where instr(address, 'beijing

  • Oracle的substr和instr函数简单用法

    Oracle的substr函数简单用法 substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符 substr('Hello World',2,4) //返回结果为 'ello' substr('Hello World',-3,3)//返回结果为

  • oracle截取字符(substr)检索字符位置(instr)示例介绍

    一:理论 oracle 截取字符(substr),检索字符位置(instr) case when then else end语句使用 收藏 常用函数:substr和instr 1.SUBSTR(string,start_position,[length]) 求子字符串,返回字符串 解释:string 元字符串 start_position 开始位置(从0开始) length 可选项,子字符串的个数 For example: substr("ABCDEFG", 0); //返回:ABCD

  • Oracle中Like与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

  • oracle正则表达式regexp_like的用法详解

    /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符.POSIX 正则表达式由标准的元字符(m

  • SQL中Charindex和Oracle中对应的函数Instr对比

    sql :charindex('字符串',字段)>0 charindex('administrator',MUserID)>0 oracle:instr(字段,'字符串',1,1) >0 instr(MUserID,'administrator',1,1)>0 在项目中用到了Oracle中 Instr 这个函数,顺便仔细的再次学习了一下这个知识. Oracle中,可以使用 Instr 函数对某个字符串进行判断,判断其是否含有指定的字符. 其语法为: Instr(string, su

  • Oracle中命名块之存储过程的详解及使用方法

    一.匿名块和命名块 ◆PL/SQL块分为良好总:命名块和匿名块. ◆匿名块:以declare或begin开始,每次执行匿名块都要通过客户端工具将其发送给Oracle,经过语法分析.编译然后执行. ◆命名块:具有名称的PL/SQL块,这些命名块被存储在Oracle中,编译一次,以后只可调用就可多次执行.如:存储过程.存储函数.包.触发器等. 存储过程:无返回值;   存储函数:有返回值;   包:可容纳多个过程或函数的一个容器(较好管理这些过程和函数,类似于java中的包);   触发器:在合适的

  • 在SQL Server和Oracle中创建job

    首先说下ms server,因为我也是新手,所以首先选择了使用企业管理器进行任务设定,然后再导出设计完毕的任务脚本,这样就可以在其他数据库中直接通过执行脚本的形式来新建任务了(需要适当修改其中的一些任务名称和数据库名称等值),下面说下具体的操作步骤以及获得的任务脚本: 1. 保证启动ms server的"SQL Server代理服务"(即agent service) 2. 打开企业管理器 -> 连接数据服务器 -> 右键"SQL Server agent"

  • Oracle中SQL语句连接字符串的符号使用介绍

    Oracle中SQL语句连接字符串的符号为|| 复制代码 代码如下: select catstr(tcdm) || (',') from T_YWCJ_RWCJR where cjrjh='009846' and rwid='12050' and jsdm='CJY' 拼接成一条数据并连接一个","

  • 查询Oracle中正在执行和执行过的SQL语句

    查询Oracle正在执行的sql语句及执行该语句的用户 SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, spid 操作系统ID, paddr, sql_text 正在执行的SQL, b.machine 计算机名 FROM v$process a, v$session b, v$sqlarea c WHERE a.addr = b.paddr AND b.sql_hash_value = c.hash_value 其它网友给出的正

  • oracle中得到一条SQL语句的执行时间的两种方式

    oracle中如果需要得到一条SQL语句的执行时间可以用如下2种方式 复制代码 代码如下: SQL> set timing on; SQL> select count(*) from wea; COUNT(*) ---------- 39490 已用时间: 00: 00: 00.06 SQL> select sql_text, elapsed_time from v$sql 2 where sql_text like 'select count(*) from wea'; 未选定行 已用

  • oracle中动态SQL使用详细介绍

    1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能建立,例如当查询条件为用户输入时,那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理.通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式.

  • Oracle中sql语句(+)符号代表连接的使用讲解

    oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join b SELECT a.*, b.* from a = b(+)就是一个左连接,等同于select a.*, b.* from a left join b 内连接 常用的连接运算符=.<.> 使用比较运算符根据每个表共有的列的值匹配两个表中的行 外连接 左连接

  • sql – Oracle中匿名TABLE/VARRAY类型示例详解

    前言 本文主要介绍的是关于sql Oracle匿名TABLE/VARRAY类型的相关内容,在Oracle中,我有时会创建一些这样的结构 SELECT * FROM TABLE(STRINGS('a', 'b', 'c')) SELECT * FROM TABLE(NUMBERS(1, 2, 3)) 显然,我可以为上述声明我自己的类型.我可以在TABLE和VARRAY之间进行选择.例如: CREATE TYPE STRINGS AS TABLE OF VARCHAR2(100); CREATE T

  • Oracle中执行动态SQL

    一.概述 在一般的sql操作中,sql语句基本上都是固定的,如: SELECT t.empno,t.ename FROM scott.emp t WHERE t.deptno = 20; 但有的时候,从应用的需要或程序的编写出发,都可能需要用到动态SQl,如: 当 from 后的表 不确定时,或者where 后的条件不确定时,都需要用到动态SQL. 使用execute immediate语句可以处理包括ddl(create.alter和drop).DCL(grant.revoke).DML(in

随机推荐