sql - SQL通过减去另外两个字符串列来创建新的字符串列
问题描述
我正在尝试通过减去另外两个列 NameVer 和 Ver 来创建一个新列。基本上输出的值应该是 Name - Ver,例如 Adam Philips-10021 - 10021 = Adam Philips(我还需要 Ver 删除之前的最后一个破折号)。
我有一个下表:
名称Ver | 版本 |
---|---|
Cristine Pharrel 博士 HF-10021 | 10021 |
Mary-2Jane Jean-CF2331 | CF2331 |
迈克尔 1772 d'Oro-1027763 | 1027763 |
我想要实现的是这张表:
名称Ver | 版本 | 姓名 |
---|---|---|
Cristine Pharrel 博士 HF-10021 | 10021 | Cristine Pharrel 博士 |
Mary-2Jane Jean-CF2331 | CF2331 | Mary-2Jane Jean |
迈克尔 1772 d'Oro-1027763 | 1027763 | 迈克尔 1772 金奖 |
如您所见,字符串由各种字符组成,有时破折号不仅出现在 Ver 部分之前,而且还出现在中间的某个位置。此外,我发现两列中的一些字符串在可见字符之外都有空格。
我尝试使用以下代码:
SELECT SUBSTRING(NameVer, 1, LEN(Ver)+1)
from myTable
不幸的是,而不是例如Dr. Cristine Pharrel HF
我得到Dr. Cr
解决方案
我们可以在这里尝试使用普通REPLACE
的:
SELECT
NameVer,
Ver,
REPLACE(NameVer, '-' + Ver, '') AS Name
FROM myTable;
演示
推荐阅读
- apache-spark - Spark 异常:写入行时任务失败(Kuberenetes 上的 Spark)
- ios - 以正确的方式使用结构常量(使用动态值)
- ios - 如何快速修复 DispatchGroup 离开的错误
- java - 如何将泛型类型转换为字符串
- c# - 如何从捕获的数据包中获取短信?
- php - 我的代码中的行计数方法没有返回受影响的行有什么问题?
- python - 如何使用 pandas 填写缺失的时间数据
- visual-c++ - 在BST中,我将一个节点复制到另一个节点并删除第一个节点并返回复制的节点,但复制的节点值是垃圾
- node.js - Termux - npm 错误!错误:EPERM:不允许操作
- discord.js - 将 DM 发送给 discord.js 中命令 arg 指定的用户