tsql - 如何从这个全名中解析出名字、姓氏和中间名
问题描述
如何从这个全名中解析出名字、姓氏和中间名
例子
Fullname
------------------
Jose,KENNETH;N
解决方案
APPLY
是你的朋友。
询问:
DECLARE @string VARCHAR(1000) = 'Jose,KENNETH;N'
SELECT
FullName = @string,
FirstName = SUBSTRING(@string,0,a.pos),
LastName = SUBSTRING(@string,a.pos+1,b.pos-a.pos-1),
Middle = SUBSTRING(@string,b.pos+1,8000)
FROM (VALUES(CHARINDEX(',',@string))) AS a(pos)
CROSS APPLY (VALUES(CHARINDEX(';',@string,a.pos))) AS b(pos);
结果:
FullName FirstName LastName Middle
------------------ ---------- --------- --------
Jose,KENNETH;N Jose KENNETH N
根据 OP 的评论更新
不使用APPLY
:
SELECT
FullName = @string,
FirstName = SUBSTRING(@string,0,CHARINDEX(',',@string)),
LastName = SUBSTRING(@string,CHARINDEX(',',@string)+1,CHARINDEX(';',@string,CHARINDEX(',',@string))-CHARINDEX(',',@string)-1),
Middle = SUBSTRING(@string,CHARINDEX(';',@string,CHARINDEX(',',@string))+1,8000);
推荐阅读
- swift - 具有关联类型和影子类型擦除的 Swift 协议
- deployment - kubernetes 的“AVAILABLE”列表示“0”,但前面的步骤(在 Kubernetes 指南中)是可以的
- node.js - AWS-SES 电子邮件地址未经验证。邮箱帐户
- vim - 我怎么能让 vim ale 插件使用 pylint 配置文件
- c# - 如何始终使用 DocumentFormat.OpenXml 跳过指定的行数
- android - View Pager 不在 scrollView 中滚动
- html - 如何从具有从 Illustrator 导出的现有变换属性的原点旋转多个圆形路径
- r - 如何在 R 的回归模型中使用 ICD10 代码?
- mysql - 错误 SQL 查询:使用 SUM 方法,当 #1111 - 无效使用组函数
- r - e(s, a) 中的错误:未找到句子标记注释。在 R 中执行 NER 时出错