从SQL字符串中删除字符(搜索)
今天应该很简单。我有一列合同清单: 正如您所看到的,有些合同的末尾有一个“-…”。我需要删除这个字符和后面的任何字符(请参阅所需的输出)。不幸的是,它不仅仅是一个字符(可能是多个/不同的字符)。所以我想它将是一个右/右/搜索组合从SQL字符串中删除字符(搜索),sql,search,replace,Sql,Search,Replace,今天应该很简单。我有一列合同清单: 正如您所看到的,有些合同的末尾有一个“-…”。我需要删除这个字符和后面的任何字符(请参阅所需的输出)。不幸的是,它不仅仅是一个字符(可能是多个/不同的字符)。所以我想它将是一个右/右/搜索组合 想法?您可以使用patindex确认是否存在两条破折号。使用doublecharindex,然后可以返回第二个破折号之前的字符串部分: select case when patindex('%-%-%', col1) > 0 then
想法?您可以使用
patindex
确认是否存在两条破折号。使用doublecharindex
,然后可以返回第二个破折号之前的字符串部分:
select case
when patindex('%-%-%', col1) > 0 then
left(col1, charindex('-', col1, charindex('-', col1) + 1) - 1)
else col1
end as col1
from dbo.YourTable
如果所有合同都具有相同的格式,则以下几乎是执行所需操作的标准SQL:
select (case when CTNumber like '%-%-%'
then left(CTNumber, 7)
else CTNumber
end) as DesiredOutput
from t
like
语法是标准的,case
是标准的,大多数数据库都有left()
函数。这确实假设CTNumber的形式是这样的:您总是想要前七个字符。您总是想要左七个字符吗?这个问题没有显示任何研究成果。做家庭作业很重要。告诉我们你发现了什么,为什么它不能满足你的需要。这表明你花了时间来帮助自己,这使我们不必重复显而易见的答案,而且最重要的是,这有助于你得到更具体、更相关的答案。“期望输出”是SQL列吗?您是只使用SQL还是与java、c#等中的应用程序一起使用?您使用的是哪种DBMS?博士后?甲骨文?除了FreshPrince还有其他人想做建设性的吗?我使用的是SQL,字符限制会改变,但总有…-。。。。我尝试使用Left(A.ContractNumber、charindex('-',A.ContractNumber、charindex('-',A.ContractNumber)+1)-1),但始终出现以下错误“传递给Left或SUBSTRING函数的长度参数无效”