2015-09-03 80 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