2015-09-03 52 views
0

我加了后缀ID使用下面的查询如何删除后缀添加的ID将以前添加SQL

Update [databasename].[dbo].[customers] set [relnum] = RTRIM(relnum) + '-9999' GO 

已运行多次,以允许SQL的数据将SQL服务器上。我需要知道如何彻底清除它,以及如何只留下-9999一个实例场上在dbo

* relnum **

test-9999-9999-9999 
0000109-9999-9999-9999 
62077-9999-9999-9999 51387-9999-9999-9999 

谁能给我一个想法或观念上如何彻底清除它,也只留下一组-9999

+1

更换前(relnum, '-9999', '') +'-9999'。即全部删除-9999,然后添加一个-9999。 – jarlh

+0

@jarth加上这个作为回答它的一个很好的解决方案的OP的肖像 – Kai

回答

1

这涵盖了所有可能出现的情况。使用CHARINDEX()LEFT()功能:

Fiddle samplË

UPDATE Customers SET relnum = 
     CASE WHEN CHARINDEX('-9999', relnum, 1) > 0 THEN 
        LEFT(relnum, CHARINDEX('-9999', relnum, 1)-1) 
      ELSE relnum 
     END + '-9999' 

数据更新

| relnum  | 
|---------------| 
| abc-9999  | 
| xyz-9999-9999 | 
| pqr   | 

数据更新后

| relnum  | 
|---------------| 
| abc-9999  | 
| xyz-9999  | 
| pqr-9999  | 
+0

这工作..非常感谢。我将如何完全删除后缀? – Hasnain

+1

那么,删除更新查询中的最后一个“+”-9999“。 – Kaf

0

可能:

Update [databasename].[dbo].[customers] set [relnum] = replace(relnum,'-9999-9999','-9999') 

运行了几次,你会没事的。

希望它有帮助!

+0

也工作。谢谢 – Hasnain

0

试试这个:

UPDATE customers set [relnum] = SUBSTRING(relnum, 1, LEN(relnum) - 5) 
WHERE relnum LIKE '%-9999-9999' 

目的是删除所有你从哪里排存在至少两个串联-9999后缀

这个脚本,你必须凛这个剧本,最后的后缀-9999时间直到所有-9999发射你不想要的东西,走开。

显示here

+0

这没有奏效,并给出响应0行受到影响 – Hasnain

+0

亲爱的,这是我的sql小提琴:http://sqlfiddle.com/#!6/e5a88/1/0 –

0

希望你的实际列值不包含 “-9999”

Update [databasename].[dbo].[customers] set [relnum] = REPLACE([relnum], '-9999', '') + '-9999' where LEFT([relnum], 5) <> '-9999' 
GO 
+0

不,它不是它唯一的数字有关到一家商店,我不能透露它 – Hasnain