删除多个特定字符后的文字

时间:2017-02-03 17:56:40

标签: sql sql-server-2008

我必须合并两个文本列,然后删除/,或(或单词“with”之后的所有文本

实施例: 两列的组合看起来像这样:

Select ,COALESCE(DT.Column1, '') + ' ' + COALESCE(M.Column2, '') AS Result1
from Table1 dt
join Table2 M on dt.M_Id =M.id

结果集目前看起来像这样:

SomeResults/Here
SomeMoreResults(here)
AndMoreResultsWITHthis

我需要它们看起来像这样:

SomeResults
SomeMoreResults
AndMoreResults

2 个答案:

答案 0 :(得分:1)

使用SUBSTRING功能:

SELECT CASE
         WHEN Col LIKE '%/%' THEN SUBSTRING(Col, 1, CHARINDEX('/', Col)-1)
         WHEN Col LIKE '%(%' THEN SUBSTRING(Col, 1, CHARINDEX('(', Col)-1)
         WHEN Col LIKE '%WITH%' THEN SUBSTRING(Col, 1, CHARINDEX('WITH', Col)-1)
      END;

答案 1 :(得分:0)

您可以使用left()

select (case when col like '%/%' and col  not like '%WITH%/%'
             then left(col, charindex('%/%', col)) - 1
             when col like '%WITH%'
             then left(col, charindex('%WITH%', col)) - 1
             else col
        end) as newcol

注意:如果上限对于'WITH'很重要,您可能也需要使用排序规则。

相关问题