-1

今天应该是一个很简单的。我有一列包含合同列表:

在此处输入图像描述

如您所见,有些合同的末尾有一个“-....”。我需要删除这个和之后的任何字符(请参阅所需的输出)。不幸的是,它不仅仅是 1 个字符(可能是多个/不同的#s)。所以我想这将是一个 right/len/search 组合。

想法?

4

2 回答 2

0

您可以使用patindex来确认是否存在两个破折号。使用 double charindex,您可以在第二个破折号之前返回字符串的一部分:

select  case 
        when patindex('%-%-%', col1) > 0 then
            left(col1, charindex('-', col1, charindex('-', col1) + 1) - 1)
        else col1
        end as col1
from    dbo.YourTable
于 2013-06-19T14:46:43.827 回答
0

如果合约都具有相同的形式,那么以下几乎是标准 SQL 用于执行您想要的操作:

select (case when CTNumber like '%-%-%'
             then left(CTNumber, 7)
             else CTNumber
        end) as DesiredOutput
from t

like语法是标准的,是case标准的,大多数数据库都有一个left()功能。这确实假设 CTNumber 的形式是您始终需要前七个字符。

于 2013-06-19T15:02:16.330 回答