SQL Server Charindex()函數

在本教學中,將學習如何使用SQL Server CHARINDEX()函數來搜索字串中的子字串。

SQL Server CHARINDEX()函數簡介

SQL Server CHARINDEX()函數從指定位置開始搜索字串內的子字串。 它返回搜索到的字串中找到的子字串的位置,如果未找到子字串,則返回零。 需要注意的是:它返回的起始位置是從1開始的,而不是從0開始的。

以下是CHARINDEX()函數的語法:

CHARINDEX(substring, string [, start_location])

在上面語法中,

  • substring - 是要搜索的子字串。它的長度限制為8,000個字元。
  • string - 可以是文字字串,運算式或列。這是一個要搜索的字串。
  • start_location是搜索開始的位置。 start_location是整數,大整數或計算結果為這些數據類型的值的運算式。

  • start_location參數是可選的。 如果未指定,零或負值,則搜索從字串的開頭開始。

請注意,CHARINDEX()函數可以根據指定的排序規則執行區分大小寫和不區分大小寫的搜索。

SQL Server CHARINDEX()函數示例

下麵來看一些使用CHARINDEX()函數的例子。

1. 使用CHARINDEX()執行單個搜索

以下示例使用CHARINDEX()函數在字元中"SQL Server CHARINDEX"中執行字串"SQL的簡單搜索。

SELECT
    CHARINDEX('SQL', 'SQL Server CHARINDEX') position;

執行上面查詢語句,得到以下結果:

position
-----------
1

(1 row affected)

2. 使用CHARINDEX()函數執行不區分大小寫的搜索
下麵語句中對字串"SQL Server CHARINDEX"中執行不區分大小寫的搜索字串"SERVER"

SELECT
    CHARINDEX(
        'SERVER',
        'SQL Server CHARINDEX'
    ) position;

執行上面查詢語句,得到以下結果:

position
-----------
5

(1 row affected)

3. 使用CHARINDEX()函數執行區分大小寫的搜索
以下示例顯示如何在字串:"SQL Server CHARINDEX"中區分大小寫搜索字串"SERVE"

SELECT
    CHARINDEX(
        'SERVER',
        'SQL Server CHARINDEX'
        COLLATE Latin1_General_CS_AS
    ) position;

執行上面查詢語句,得到以下結果:

position
-----------
0

(1 row affected)

4. 使用CHARINDEX()函數搜索不存在的子字串
以下示例說明了如何在字串'This is a haystack'中搜索子字串:'needle'

SELECT
    CHARINDEX('is','This is a my sister',5) start_at_fifth,
    CHARINDEX('is','This is a my sister',10) start_at_tenth;

執行上面查詢語句,得到以下結果:

start_at_fifth start_at_tenth
-------------- --------------
6              15

(1 row affected)

在本教學中,學習了如何使用SQL Server CHARINDEX()函數從指定位置搜索字串中的子字串並返回子字串的位置。


上一篇: SQL Server字串函數 下一篇: SQL Server Window函數