从SQL字符串中删除字符(搜索)

时间:2013-06-19 14:37:49

标签: sql search replace

今天应该是一个非常简单的。我有一个列有合同清单的专栏:

enter image description here

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

思想?

2 个答案:

答案 0 :(得分:0)

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

select  case 
        when patindex('%-%-%', col1) > 0 then
            left(col1, charindex('-', col1, charindex('-', col1) + 1) - 1)
        else col1
        end as col1
from    dbo.YourTable

答案 1 :(得分:0)

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

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

like语法是标准语法,case是标准语法,大多数数据库都有left()函数。这确实假设CTNumber的形式是这样的,你总是想要前七个字符。