sql - SQL Server:'-'连字符的特定位置的子字符串
问题描述
我需要在 SQL Server 中执行子字符串操作并从连字符 (-) 开始获取字符串。
我的输入字符串是:
'44345434595-E535-12349-5273-202003-16785'
我想从第 4 个连字符实例中提取字符串到第 5 个连字符实例,我想要的结果是:202003
解决方案
您可以string_split
在sqlserver
declare @str varchar(max)= '44345434595-E535-12349-5273-202003-16785'
select * from (select value, row_number() over (order by charindex('-' + value + '-', '-' + @str + '-')) rn
from string_split(@str, '-')) t1
where t1.rn in (5)
由于无法保证ordering
使用string_split
功能,我们需要position
根据您的排序-
row_number() over (order by charindex('-' + value + '-', '-' + @str + '-'))
推荐阅读
- c++ - 汇编器除法 x86 奇怪的数字
- postgresql - 优化 PgSQL 查询功能性能
- mysql - 如果设置了所有字段,则验证 mySQL 中的表
- javascript - vue js和strapi - 控制台说属性未定义但不是 - 它呈现在页面上
- oauth-2.0 - 在没有用户同意的情况下授权访问在线交换?
- regex - Oracle 正则表达式 - 查找文本中的所有值
- python - 状态码 403,无法使用用户代理标头修复
- javascript - Validate.js 正则表达式未按预期工作
- kubernetes - Kustomize - 使用相同的命名空间创建多个和单个部署
- c# - 将 Serilog Config 移至 appsettings.json 的问题