首页 > 解决方案 > 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

标签: sqlstringsubstring

解决方案


我们可以在这里尝试使用普通REPLACE的:

SELECT
    NameVer,
    Ver,
    REPLACE(NameVer, '-' + Ver, '') AS Name
FROM myTable;

下面演示链接的屏幕截图

演示


推荐阅读