簡體   English   中英

SQL Server 中的 Charindex() 功能

[英]Charindex() functionality in SQL Server

任何人都可以解釋 SQL Server 中 CharIndex() 函數的實際工作。 我瀏覽了 MSDN 和其他網站。 但讀完這些后,我幾乎沒有懷疑。 我可以用 2 個參數來理解。 但是一旦我們使用第三個參數(起始位置)我就無法理解輸出請看下面的例子。

SELECT CHARINDEX('t', 'TechOnTheNet.com', 3);
-- Result: 7

SELECT CHARINDEX('t', 'TechOnTheNet.com', 8);
-- Result: 12

我無法理解為什么上述兩個結果如此。

來自CHARIDNEX

起始位置

是搜索開始的整數或 bigint 表達式。 如果未指定 start_location、為負數或為 0,則搜索從 expressionToSearch 的開頭開始。

搜索是從^符號向前。

SELECT CHARINDEX('t', 'TechOnTheNet.com', 3); -- Result: 7
                         ^---x-------->   

SELECT CHARINDEX('t', 'TechOnTheNet.com', 8); -- Result: 12
                              ^---x--->

第三個參數是起始位置,因此跳過此點之前的任何匹配模式。

所以在你的例子中:-

SELECT CHARINDEX('t', 'TechOnTheNet.com', 3)

起始位置為 3,因此跳過第一個 't' 並返回從位置 7 開始的下一個。

SELECT CHARINDEX('t', 'TechOnTheNet.com', 8)

起始位置為 8,因此跳過 't' 的第一個和第二個實例,並從位置 12 開始返回下一個實例。

charindex的第三個參數(可選)是搜索的開始位置。

SELECT CHARINDEX('t', 'TechOnTheNet.com', 3); -- Result: 7

在這種情況下, t的搜索從 3 開始。但輸出將是t在原始字符串中的位置。

您可以看到它也與您的其他示例類似。

最后一個參數是起始索引,因此它指示它將查找指定字符的第一個字符串位置。 輸出是指定字符下一次出現的絕對偏移量(基於一個)。

在您的示例中,偏移量 1、7 和 12 處有一個 T 字符(不區分大小寫)。 該函數返回大於或等於指定起始偏移量的第一次出現。

你提到你已經閱讀了MSDN文章,然后我真的不知道你為什么錯過了那篇文章的這個CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )部分。

它清楚地說明了您想知道的一切。

CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] 

表達式查找

Is a character expression that contains the sequence to be found. expressionToFind is limited to 8000 characters.

表達式搜索

Is a character expression to be searched.

起始位置

 Is an integer or bigint expression at which the search starts.
 If start_location is not specified(It's OPTIONAL PARAMETER),
 is a negative number, or is 0,
 the search starts at the beginning of expressionToSearch.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM