sql 查詢字符坐標位置 之PATINDEX()函數詳解


patindex與charindex相似,patindex可以匹配正則表達式

PATINDEX('%[^0-9]%',@currentStr) --patindex與charindex相似,patindex可以匹配正則表達式,
--%%表示任意字符串,^表示不匹配,^0-9表示不匹配數字,返回字符串在原字符串中的位置

前言:

在sql語句查詢中,有時候,我們可以通過like模糊查詢來判斷是否存在某個數據,但是,當我們要確定某個字符串第一次出現的位置時,like語句查詢是無法實現的。但是,可以通過patindex()函數來實現。

1.概念:
patindex是用於返回指定模式開始位置的一個函數,其中,模式是可以包含通配符的字面字符串。開始位置從1開始算起,當知道模式中的字符串存在於表達式中時,會返回第一次出現的位置。如果不存在,返回數字0.

2.格式:
語法格式:PATINDEX ( '%pattern%' , expression )

說明:pattern:是用於檢測的字符串,expression是一個表達式,可以是任意有效的數據類型,pattern會用在expression表達式中進行檢測,存在就返回第一次出現的位置,不存在就返回0,下標位置從1開始。

3.具體格式:
1).PATINDEX ( '%pattern%' , expression ):指定字符串前后模糊查詢:

代碼1:select patindex('%34%','13543452123')

返回結果圖:

 

 代碼2:select patindex('%36%','13543452123')

返回結果圖:

 

說明:代碼1中,指定的字符串34,在表達式中,第一次出現的位置是5,所以返回數字5。代碼2中,指定字符串36沒有在表達式中,所以返回數字0

3.PATINDEX 支持在[]中括號^否定號中查詢
[]中括號格式:PATINDEX ( '%[pattern]%' , expression )

^否定號中格式:PATINDEX ( '%[^pattern]%' , expression )

說明:[]是一個特殊的符號,是指[]中任意的一個字符只要在表達式expression中出現,就直接返回其第一次出現的位置。

[^]是一個否定符號,指表達式中,除了[]中指定的字符之外,其他任意字符第一次出現的位置。

1).PATINDEX ( '%[pattern]%' , expression ):指定字符串中,只要任意一個值在表達式中出現,就返回第一次出現的位置。

代碼1:select PATINDEX('%[ab]%','weaqbr')

返回結果圖:

 

代碼2:select PATINDEX('%[ab]%','wetqyr')

返回結果圖:

 

 

說明:[]中括號中,只要指定字符串任意一個字符出現在表達式中,就返回第一次出現的字符的位置。如果[]中括號中任意的字符串都沒有在表達式中,就直接返回數字0.代碼1中,指定的字符串a和b都在表達式中,表達式中a第一次出現的位置是3,所以直接返回a第一次出現的位置3,不在考慮b的位置了。而代碼2中,指定字符串a和b都沒有在表達式中,所以直接返回數字0.

2).PATINDEX ( '%[^pattern]%' , expression ):表達式中除了指定字符串之外,返回其他任意字符串第一次出現的位置

代碼1:select PATINDEX('%[^12]%','1342567')

返回結果圖:

 

大碼2:select PATINDEX('%[^12]%','12212211')

返回結果圖:

 

 

說明:%[^pattern]%:否定符^格式是指,在表達式中,返回除了指定字符串之外的任意字符串中第一次出現的位置。

代碼1中,指定字符串為1和2,在表達式中,除了1和2之外,第一次出現的字符是3,位置為2,所以返回第一次出現的位置為數字2。代碼2中,指定字符串為1和2,而表達式中的字符串都是1和2,沒有其他的字符串存在,所以返回數字0.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM