sql-server - sql split row value before and after substring
问题描述
解决方案
No need for ordinal splitter. It's a simple unpivot using CROSS APPLY
[EDIT] Changed method of splitting to look for '%/%/%' in cases where there's an alias
select cast(unpvt.id as varchar(9))+iif(unpvt.seq=1, '', '.1') ID,
trim(replace(replace(replace(unpvt.[Name],'f/k/a - ',''),'f/k/a ',''),'n/k/a ','')) [Name]
from (values (1, 'Evil Empire, f/k/a - Starbucks'),
(2, 'Aubrey Drake Graham, n/k/a Drake'),
(3, 'Thomas Johnson Bridge, f/k/a Solomans Bridge'),
(4, 'Thomas, J, Cat, f/k/a Solomans,,,Bridge'),
(5, 'Thomas')) v(id, [Name])
cross apply (values (v.id, substring(v.[Name], 1, patindex('%/%/%', v.Name)-4), 1),
(v.id, substring(v.[Name], patindex('%/%/%', v.Name)-1, len(v.[Name])), 2)) unpvt(id, [Name], seq)
where patindex('%/%/%', v.[Name])>1;
Results
ID Name
1 Evil Empire
1.1 Starbucks
2 Aubrey Drake Graham
2.1 Drake
3 Thomas Johnson Bridge
3.1 Solomans Bridge
4 Thomas, J, Cat
4.1 Solomans,,,Bridge
推荐阅读
- python - Python中的函数式编程:最长子串
- php - 动态 PHP 变量作为对数组键的引用?
- swift - 使用 Combine 将回调方法转换为响应式
- javascript - 如何在 Phaser 3 中移除玩家和地面之间的空白空间
- python - 我应该将我的项目版本提交到 Git 吗?
- bash - && 和 || 的区别 Bash 中的运算符
- php - fgetc() 函数读取整个文件
- node.js - 当由 `yarn` 安装时,来自 Git 存储库的 `npm` 依赖项无法正确构建
- angular - Angular 单元测试 HTTP 错误拦截器 catchError/ErrorEvent/Error
- reactjs - 是一个使用仅返回api响应的useeffect的函数可以在另一个组件的方法中调用吗?