[英]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
我無法理解為什么上述兩個結果如此。
起始位置
是搜索開始的整數或 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.