SQL中CHARINDEX()/INSTR()函数和SUBSTRING()/SUBSTR()函数

一、SQLServer中的CHARINDEX() 和ORACLE中的INSTR()函数

  1、INSTR(C1,C2[,I[,J]])

  【功能】在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

  【说明】多字节符(汉字、全角符等),按1个字符计算

  【参数】 C1 被搜索的字符串

C2 希望搜索的字符串

I 搜索的开始位置,默认为1

J 第J次出现的位置,默认为1

  【返回】数值

  【示例】

   select instr('abcdefgc','c',1,2) from dual;

    返回:8

  2、CHARINDEX(C1,C2[,I])

  【功能】在一个字符串中搜索指定的字符,返回发现指定的字符的位置;

  【说明】多字节符(汉字、全角符等),按1个字符计算

  【参数】C1希望搜索的字符串

           C2被搜索的字符串

      I 搜索的开始位置,默认为1

  【返回值】数值

  【实例】

  select charindex('c','abcdefgc',4)

    返回:8

  【总结】需要注意的地方是虽然INSTRCHARINDEX函数实现的功能相同,但C1,C2表示的意思完全相反,而且INSTR的功能更强大,可以查找第J次出现的位置。

二、SQLServer/MySQL中的SUBSTRING()  和ORACLE中的SUBSTR()函数

  功能:返回字符、二进制、文本或图像表达式的一部分

  语法:SUBSTRING ( expression, start, length )

  SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样:

      •   MySQL: SUBSTR(), SUBSTRING()
      •   Oracle: SUBSTR()
      •   SQL Server: SUBSTRING()

  参数:

    expression 字符串、二进制字符串、文本、图像、列或包含列的表达式。请勿使用包含聚合函数的表达式。

    start 整数或可以隐式转换为 int 的表达式,指定子字符串的开始位置。

    length 整数或可以隐式转换为 int 的表达式,指定子字符串的长度。
  返回值:

    如果 expression 是一种支持的字符数据类型,则返回字符数据。如果 expression 是一种支持的二进制数据类型,则返回二进制数据。如果 start = 1,则子字符串从表达式的第一个字符开始。

    返回字符串的类型与给定表达式的类型相同(下表所示内容除外)。

  示例:

    select SUBSTRING(displayname,3,len(displayname) from table where len(displayname)>3;--SQLServer

    select SUBSTR(displayname,3,length(displayname) from table where length(displayname)>3;--ORACLE

http://www.cnblogs.com/ivan0626/p/3664548.html

http://www.cnblogs.com/xionglee/articles/1444927.html

上一篇:SQLServer中exists和except用法


下一篇:mysql-exporter