Tsql 用于从列值中删除特殊字符后的字母的SQL语句

Tsql 用于从列值中删除特殊字符后的字母的SQL语句,tsql,Tsql,我有一个名为“TableA”的表,其中有一列“KNumber”,该列有一些值[Data],其中包含管道“|” 举例如下 1. AMERIK20121218|HA 2. AMERIKINITIAL20121130|DSS 3. |DSS 4. |HI 现在我想通过删除KNumber列中的这些额外值来对“TableA”执行清理-如果在 需要删除的结尾和“|”之后的任何值 执行此操作的TSQL查询是什么? 我有3000行用于该列,其中包含“|”。我想更新所有这3000行并删除“|”之后的内容

我有一个名为“TableA”的表,其中有一列“KNumber”,该列有一些值[Data],其中包含管道“|”

举例如下

1. AMERIK20121218|HA

2. AMERIKINITIAL20121130|DSS

3. |DSS

4. |HI
现在我想通过删除KNumber列中的这些额外值来对“TableA”执行清理-如果在

需要删除的结尾和“|”之后的任何值

执行此操作的TSQL查询是什么? 我有3000行用于该列,其中包含“|”。我想更新所有这3000行并删除“|”之后的内容

我使用SQLServer2008R2


提前谢谢你的帮助

如果
KNumber
在a中,您可以使用:

UPDATE TableA
SET KNumber = SUBSTRING(KNumber,0,CHARINDEX('|', KNumber)-1)
WHERE Contains(KNumber, '|')    
UPDATE TableA
SET KNumber = SUBSTRING(KNumber,0,CHARINDEX('|', KNumber)-1)
WHERE KNumber LIKE '%|%'
如果不是,您可以使用:

UPDATE TableA
SET KNumber = SUBSTRING(KNumber,0,CHARINDEX('|', KNumber)-1)
WHERE Contains(KNumber, '|')    
UPDATE TableA
SET KNumber = SUBSTRING(KNumber,0,CHARINDEX('|', KNumber)-1)
WHERE KNumber LIKE '%|%'

这是一个演示。

感谢Alex提供的解决方案。顺便问一下,什么是全文索引?对不起,我对这个不太熟悉。不客气。我已经用一个解释全文索引的链接更新了答案。嗨,Alex,我在测试这个查询时遇到了一个问题。看看你的例子,它多删除了一个字符,这给我带来了很多问题。例如,我们插入了“('amerik0121218 | HA')”值,我希望ans为“amerik2012 1218”,但查询结果为“amerik2012 1218”,因此删除了一个字符。您能帮助我吗?更新TableA SET KNumber=SUBSTRING(KNumber,1,CHARINDEX(“|”,KNumber)-1),其中KNumber类似“%”的=>>>>>这将解决使用CHARINDEX进行的某些查询的问题