如何删除以前添加SQL的sql server上添加的后缀id

时间:2015-09-03 09:49:58

标签: sql sql-server

我添加了一个后缀id,允许使用以下查询合并sql中的数据

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

它已被运行不止一次。我需要知道如何完全删除它以及如何只在dbo中的字段上留下-9999的一个实例

* relnum **

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

任何人都可以给我一个关于如何完全删除它的想法或想法,并且只留下一组-9999

4 个答案:

答案 0 :(得分: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      |

答案 1 :(得分:0)

也许:

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

运行几次,你就没事了。

希望它有所帮助!

答案 2 :(得分:0)

试试这个:

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

每次你使用这个脚本时都会删除目标,你行中的最后一个后缀-9999至少有两个连接的-9999后缀

这个脚本你必须多次启动,直到你不想要的所有-9999,离开。

显示here

答案 3 :(得分:0)

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

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