SQL Server 中的 CHARINDEX 函數對於處理和操作字符串數據很有用。它最常用於定位字符串中子字符串或表達式的開始位置。簡單來說,我們可以說這個函數用於從指定位置搜索字符串中的指定字符或字符。一個字符可以出現在字符串中的多個位置。此函數將返回字符串中的第一個字符位置並忽略其餘匹配的字符位置。
讓我們通過下麵的例子來理解這個函數的概念。
招聘公司的在線門戶是解釋其概念的一個很好的例子。招聘公司會收集每個學生或客戶的詳細信息,並為他們提供安置幫助。假設公司老板需要查看每個員工的電子郵件地址格式是否正確;在這種情況下,他們可以通過使用 CHARINDEX() 函數來做到這一點。例如,他們可以驗證字符 '@' 是否存在於輸入的郵件 ID 中。
用法
以下是說明 SQL Server 中 CHARINDEX 函數的基本語法:
CHARINDEX ( expression_to_find , expression_to_search [ , starting_position ] )
我們可以在CHARINDEX函數中看到如下參數:
expression_to_find:它是定義我們要在另一個字符串中查找的字符或字符串的必需參數。
expression_to_search:它是一個必需參數,指示我們將在其中搜索子字符串的字符串或表達式。
starting_position:這是一個可選參數,它采用整數值來指定搜索字符串的起始位置。如果我們想在給定的字符串中搜索子字符串,我們需要指定一個起始位置。但是,如果我們不為此參數指定值,則默認情況下,它將從索引位置 0 開始搜索。如果我們將其指定為 0 或負值,該函數也將從頭開始搜索字符串。
返回
- 此函數返回給定表達式或字符串中子字符串的位置。
- 如果子字符串不包含在字符串中,該函數將返回 0。
支持的版本
CHARINDEX 函數將適用於以下 SQL Server 版本:
SQL Server 2019、SQL Server 2018、SQL Server 2017、SQL Server 2016、SQL Server 2014、SQL Server 2012、SQL Server 2008 R2、SQL Server 2008、SQL Server 2005、Azure SQL 數據庫、Azure SQL 數據倉庫和並行數據倉庫.
注意:CHARINDEX 函數可以在不打擾區分大小寫或不區分大小寫的字符的情況下執行搜索。
CHARINDEX 函數示例
讓我們了解 CHARINDEX 函數在 SQL Server 中的工作原理。
1. CHARINDEX 函數用於單次搜索
下麵的示例將使用 CHARINDEX 函數在給定的字符串 'SQL Tutorial Javatpoint' 中找到一個搜索字符串 'SQL' 並返回其位置:
SELECT CHARINDEX('SQL', 'SQL Tutorial Javatpoint') AS Position;
執行該語句將顯示以下輸出:
2. 搜索字符串中的一個字符位置
此示例將給出 @ 字符在指定電子郵件地址中的位置。
SELECT CHARINDEX ('@','peter.huge@javatpoint.com') as 'CharacterPosition'
執行該語句將顯示以下輸出:
3.在字符串中執行不區分大小寫的搜索
此示例將返回指定字符串中搜索字符串的位置,而無需區分大小寫:
SELECT CHARINDEX('SERVER', 'SQL server Tutorial Javatpoint') AS Position;
執行該語句將顯示以下輸出:
4. 使用 COLLATE 子句執行區分大小寫的搜索
此示例顯示使用 COLLATE 子句在搜索字符串 'SQL server Tutorial Javatpoint' 中對字符串 'SERVER' 進行區分大小寫的搜索。
SELECT CHARINDEX('SERVER',
'SQL server Tutorial Javatpoint'
COLLATE Latin1_General_CS_AS
) AS Position;
執行該語句將顯示以下輸出,因為它在指定的字符串中不包含字符串 "SERVER"。
5. 搜索不存在的子串
下麵的示例在字符串 'Javatpoint is best for learning java' 中搜索子字符串 'JavaScript':
DECLARE @str VARCHAR(50);
SELECT @str = 'Javatpoint is best for learning java';
SELECT CHARINDEX('JavaScript', @str) AS Position;
執行該語句將顯示以下輸出:
6. 搜索多個匹配的子串
下麵的示例執行搜索指定字符串中具有多個匹配項的子字符串。這裏我們要搜索java並找到它的位置。
DECLARE @str VARCHAR(50);
SELECT @str = 'It is best to learn java on Javatpoint. Java is best for backend programming';
SELECT CHARINDEX('Java', @str) AS Position;
執行該語句將返回第一個匹配的子串位置:
7. CHARINDEX 函數從特定位置開始搜索
在本例中,我們將使用 starting_position 參數在給定字符串的第十個字符處開始搜索子字符串 'for':
SELECT CHARINDEX ('for', 'Love for all, Hate for none', 10) As Position;
執行該語句將顯示以下輸出:
相關用法
- SQL Server CHAR()用法及代碼示例
- SQL Server COUNT()用法及代碼示例
- SQL Server CONCAT()用法及代碼示例
- SQL Server CONCAT_WS()用法及代碼示例
- SQL Server COALESCE()用法及代碼示例
- SQL Server CURRENT_USER()用法及代碼示例
- SQL Server CURRENT_TIMESTAMP()用法及代碼示例
- SQL Server SQRT()用法及代碼示例
- SQL Server UPPER()用法及代碼示例
- SQL Server ATN2()用法及代碼示例
- SQL Server RANK()用法及代碼示例
- SQL Server SYSTEM_USER()用法及代碼示例
- SQL Server DATEDIFF()用法及代碼示例
- SQL Server ROUND()用法及代碼示例
- SQL Server SQUARE()用法及代碼示例
- SQL Server GETUTCDATE()用法及代碼示例
- SQL Server DATEPART()用法及代碼示例
- SQL Server LOG()用法及代碼示例
- SQL Server ISDATE()用法及代碼示例
- SQL Server STR()用法及代碼示例
注:本文由純淨天空篩選整理自 SQL Server CHARINDEX() Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。