首页 > 解决方案 > 从字符串中查找字符的位置

问题描述

我尝试使用 charindex 函数查找字符串的位置,但是当同一字符串中有两个字母时,我无法获取代码。

我的问题是:从“SyedSohail”中找到 S 的位置输出应该是位置 1 5

你能帮我解决上述问题吗

我正在用 Tsql 编写代码

标签: sqlsql-server

解决方案


尝试创建一个如下所示的函数,

CREATE FUNCTION dbo.FindPatternLocation
(
    @string NVARCHAR(MAX),
    @term   NVARCHAR(255)
)
RETURNS TABLE
AS
    RETURN 
    (
      SELECT pos = Number - LEN(@term) 
      FROM (SELECT Number, Item = LTRIM(RTRIM(SUBSTRING(@string, Number, 
      CHARINDEX(@term, @string + @term, Number) - Number)))
      FROM (SELECT ROW_NUMBER() OVER (ORDER BY [object_id])
      FROM sys.all_objects) AS n(Number)
      WHERE Number > 1 AND Number <= CONVERT(INT, LEN(@string)+1)
      AND SUBSTRING(@term + @string, Number, LEN(@term)) = @term
    ) AS y);

用法:

DECLARE @str VARCHAR(MAX) = 'SyedSohail'
SELECT pos FROM dbo.FindPatternLocation(@str, 's');

资源


推荐阅读