首页  ·  知识 ·  数据库
ORACLE数据库中函数instr和SQLServer数据库中CHARINDEX函数
网友      编辑:dezai   图片来源:网络
ORACLE数据库中函数instr和SQLServer数据库中CHARINDEX函数
 公司产品后台一直都是基于oracle数据库的,但是最近有些项目中需要使用SQLServer作为后台数据库,在做产品移植时,发现产品移植到SQLServer后问题很多,大部分都是由于oracle和SQLServer中内部函数不通用所致,比如:产品中使用ORACLE中的instr函数在SQLServer中不存在,因此报出如下异常:

org.apache.jasper.JasperException: org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL grammar [select count(id) as nums from orgunitlink  where oid='null' and instr(col1,'402881e70ad1d990010ad1e5ec930008')>0]; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: 'instr' 不是可以识别的内置函数名称。















 

     因此查阅相关资料,发现SQLServer中的CHARINDEX函数功能与ORACLE中instr功能相似。

     2者使用说明如下:

1)SQLServer中的CHARINDEX

       CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。CHARINDEX函数调用方法如下:















       CHARINDEX ( expression1 , expression2 [ , start_location ] )

       Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。

       CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如CHARINDEX没有找到要找的字符串,那么函数整数“0”。让我们看看下面的函数命令执行的结果:

      CHARINDEX('SQL', 'Microsoft SQL Server')

      这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。















      接下来,我们看这个CHARINDEX命令:

      CHARINDEX('7.0', 'Microsoft SQL Server 2000')

      在这个例子中,CHARINDEX返回零,因为字符串“7.0” 不能在“Microsoft SQL Server”中被找到。接下来通过两个例子来看看如何使用CHARINDEX函数来解决实际的T-SQL问题。

2)ORACLE中的instr

INSTR方法的格式为















INSTR(源字符串, 目标字符串, 起始位置, 匹配序号) 例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是 Instring 14 在项目中用到了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

本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读