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函数