Sql中CHARINDEX用法

 CHARINDEX做用sql

  寫SQL語句咱們常常須要判斷一個字符串中是否包含另外一個字符串,可是SQL SERVER中並無像C#提供了Contains函數,不過SQL SERVER中提供了一個叫CHAEINDX的函數,顧名思義就是找到字符(char)的位置(index),既然可以知道所在的位置,固然就能夠判斷是否包含在其中了。express

      經過CHARINDEX若是可以找到對應的字符串,則返回該字符串位置,不然返回0。函數

      基本語法以下:this

  CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )3d

      expressionToFind :目標字符串,就是想要找到的字符串,最大長度爲8000 。rest

  expressionToSearch :用於被查找的字符串。blog

      start_location:開始查找的位置,爲空時默認從第一位開始查找。字符串

 

CHAEINDEX示例get

  1.簡單用法  it

  select charindex('test','this Test is Test')

  查詢結果:  

  2.增長開始位置

  select charindex('test','this Test is Test',7)

  查詢結果:

  3.大小寫敏感

  select charindex('test','this Test is Test'COLLATE Latin1_General_CS_AS)

  查詢結果:

  返回結果爲0???,不要懷疑你的眼睛,由於大小寫敏感,找不到test因此返回的就是0,默認狀況下, SQL SERVER是大小不敏感的,因此咱們簡單示例中返回結果不爲0,可是有些時候咱們須要特地去區分大小寫,所以專門SQL SERVE提供了特殊的關鍵字用於查詢時區分大小寫,其中CS爲Case-Sensitve的縮寫。

  4.大小寫不敏感

  select charindex('Test','this Test is Test'COLLATE Latin1_General_CI_AS)

  查詢結果:

  咱們也能夠這樣說明是大小寫不敏感,其中CI是Case-InSensitve的縮寫,即大小寫不敏感,固然咱們不必畫蛇添足。

 

PATINDEX

  和CHARINDEX相似,PATINDEX也能夠用來判斷一個字符串中是否包含另外一個字符串,兩種的差別在於,前者是全匹配,後者支持模糊匹配。

  1.簡單示例

  select PATINDEX('%ter%','interesting data')

  查詢結果:

  2.簡單示例2

  select PATINDEX('%t_ng%','interesting data')

  查詢結果:

 

  PATINDEX也容許支持大小寫敏感,作法和CHARINDEX同樣,此處再也不累述。

  參考:

    https://docs.microsoft.com/en-us/sql/t-sql/functions/charindex-transact-sql

  https://docs.microsoft.com/en-us/sql/t-sql/functions/patindex-transact-sql

相關文章
相關標籤/搜索