sql - 从字符串中查找字符的位置
问题描述
我尝试使用 charindex 函数查找字符串的位置,但是当同一字符串中有两个字母时,我无法获取代码。
我的问题是:从“SyedSohail”中找到 S 的位置输出应该是位置 1 5
你能帮我解决上述问题吗
我正在用 Tsql 编写代码
解决方案
尝试创建一个如下所示的函数,
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');
推荐阅读
- ssl - Apache Nifi - 使用 SSL 和 LDAP 配置安全问题
- android - 如何在android binder中找到实现该方法的文件
- python - 无法启动 Jupyter Notebook
- oracle - OCI DNS 是否支持域名注册?
- javascript - 如何使用 jquery 和 javascript 在页面加载时隐藏某些记录
- kubernetes - 使用单舵图部署多个服务
- c++ - 允许重复键并保留其插入顺序的 QMap 式容器
- python - Django在尝试创建对象时抛出“'NoneType'对象不可调用”错误
- azure - Azure - 数据库迁移服务中永无止境的完整备份上传
- jquery - 通过单击清除输入搜索