tsql - 需要分开信息
问题描述
我有一个格式为文件链接的 ClientID,它看起来像:
Doe, John (W21135446).
我需要将其分开为:
Last Name First Name File Number
Doe John W2135446
包括删除()
周围的文件号。如何编写 T-SQL 代码来为我执行此操作?
解决方案
我能够使用CHARINDEX()
和一些字符串操作系统函数来实现这一点。
SELECT val.ClientID,
LTRIM(RTRIM(LEFT(ClientID, CHARINDEX(',', ClientID)-1))) AS LastName,
LTRIM(RTRIM(SUBSTRING(ClientID, CHARINDEX(',', ClientID) + 2, CHARINDEX('(', val.ClientID) - (CHARINDEX(',', ClientID)+2)))) AS FirstName,
LTRIM(RTRIM(SUBSTRING(ClientID, CHARINDEX('(', ClientID)+1, (CHARINDEX(')', val.ClientID) - CHARINDEX('(', ClientID)-1)))) AS FileNumber
FROM (VALUES ('Doe, John (W21135446)')) AS val (ClientID);
在使用这样的字符串时,总是伴随着一些值得注意的警告:任何带有逗号的名称值(例如“Jones, Jr”)都会中断,与字符“(”和“)”的意外位置相同。只要您的所有数据都符合这个确切的模式,这应该可以帮助您完成工作。
我使用LTRIM()
andRTRIM()
函数删除了任何前导或尾随空格,因为我不完全信任我的字符串数学,但只要您验证起点和终点,它们就不是必需的。此外,请密切注意算术分组和运算顺序。
输出:
客户编号 | 姓 | 名 | 文件编号 |
---|---|---|---|
能源部约翰 (W21135446) | 能源部 | 约翰 | W21135446 |
推荐阅读
- python - 我有一个包含字符串和整数的数据集,如何编写一个只读取 Python 上的整数值的程序?
- javascript - “请求 vscode/内容意外失败,未提供任何详细信息。”
- php - get_the_category 生成错误:Call to undefined function __() in taxonomy.php
- python - 如何使用 Python3 通过单击网页中的按钮来安排 pdf 的下载
- sql - 如何排除结果中的负值
- javascript - 运行 ng serve (Angular 8)时,任何人都可以帮助我理解 cmd 中的这条消息吗?
- kubernetes - Kubernetes 服务部署在默认命名空间而不是使用 Helm 定义的命名空间
- c# - 即使在设置超时并且程序等待设置的持续时间之后,WebRequest.GetResponse() 也会引发超时异常
- c# - 一次只允许一个用户访问操作
- javascript - 为什么 React 会跳过正确设置为 state 的最后一个问题?