程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> ORACLE數據庫中函數instr和SQLServer數據庫中CHARINDEX函數

ORACLE數據庫中函數instr和SQLServer數據庫中CHARINDEX函數

編輯:Oracle數據庫基礎
公司產品後台一直都是基於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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved