SQL从另一个字符串列减去一个字符串列

凯莉丝

我想从另一个字符串列中减去两个字符串列。

我过去在Oracle中使用以下方法实现了这一点

SELECT
C.MANUFACTURER,
C.MODEL_GROUP,
REGEXP_REPLACE(C.VARIANT, '^'||C.MANUFACTURER || ' +' || C.MODEL_GROUP) "VAR DESC",
C.VARIANT
FROM STD_BI.RL2_CONTRACTS_VW C

我现在需要在MS SQL中达到相同的要求,我们将不胜感激。

戈登·利诺夫

“减”在这里肯定是一个误称。OP似乎要删除另一个字符串开头的字符串。

从这一点开始,我假设MANUFACTURER并且MODEL_GROUP不包含任何正则表达式通配符。

存在多个空间的挑战。如果没有太多,那么您可以做。例如,它处理一个或两个空格:

SELECT C.MANUFACTURER, C.MODEL_GROUP,
       (CASE WHEN C.VARIANT LIKE C.MANUFACTURER + ' ' + C.MODEL_GROUP + '%'
             THEN STUFF(C.VARIANT, 1, LEN(C.MANUFACTURER + ' ' + C.MODEL_GROUP), '')
             WHEN C.VARIANT LIKE C.MANUFACTURER + '  ' + C.MODEL_GROUP + '%' AND
             THEN STUFF(C.VARIANT, 1, LEN(C.MANUFACTURER + '  ' + C.MODEL_GROUP), '')
             ELSE C.VARIANT
        END) as [VAR DESC],
       C.VARIANT
FROM STD_BI.RL2_CONTRACTS_VW C;

编辑:

这是一个更完整的解决方案:

SELECT C.MANUFACTURER, C.MODEL_GROUP,
       (CASE WHEN C.VARIANT LIKE C.MANUFACTURER + ' %' + C.MODEL_GROUP + '%' AND
                  C.VARIANT NOT LIKE C.MANUFACTURER + ' %[^ ]%' + C.MODEL_GROUP + '%'

             THEN STUFF(LTRIM(STUFF(C.VARIANT, 1, LEN(C.MANUFACTURER), '')), 1, LEN(C.MODEL_GROUP), '')
             ELSE C.VARIANT
        END) as [VAR DESC],
       C.VARIANT
FROM STD_BI.RL2_CONTRACTS_VW C;

这仅测试两个字符串之间的空格(not like正在检查空格以外的内容)。然后分三个步骤进行替换-删除制造商,然后删除空格,然后删除模型组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将一个字符串列表与另一个字符串列表进行比较

Python-一个字符串列在另一个字符串列中吗?

如何将一个字符串列表与另一个字符串列表匹配?

根据另一个字符串列表对字符串列表进行排序

用另一个字符串列表对字符串列表进行排序

将字符串列表复制到另一个字符串列表

连接到一个字符串列表,另一个字符串

如何寻找另一个字符串中的字符串列表?

如何生成另一个字符串出现的字符串列表

检查字符串列表中是否有另一个字符串

Python:根据另一个字符串对相似字符串列表进行排序

查找字符串列表中的字符串是否在Esper中的另一个字符串列表中

测试列表中的任何项目是否属于另一个字符串列表

Java-在另一个字符串列表中搜索关键字列表

我们如何有效地检查一个字符串列表是否包含另一个字符串列表中的单词?

Golang程序在另一个字符串列表中检查一个字符串列表中的模式-密码破解

如何使用C#使用字典将位于一个字符串列表中的键映射到位于另一个字符串列表中的值?

如何将一个字符串列表的索引范围添加到另一个字符串列表

如何从另一个字符串中“减去”一个字符串?

从另一个字符串中减去一个字符串

如何使用 Python 按另一个字符串列表对字符串列表进行分组?

如何使用Python在另一个字符串列表中有效地搜索字符串列表?

如何从包含另一个字符串列表的任何项目的字符串列表中打印出列表项

如果第一个字符与列表中的另一个字符串元素匹配,则删除字符串列表中的字符串元素

显示多个字符串列表中的一个字符串

计算多个字符串列中一个字符串的出现

仅使用一个字符在字符串列表上生成排列

删除火花字符串列的第一个字符

根据第一个字符的外观分隔字符串列