我添加了一个后缀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
答案 0 :(得分:1)
这涵盖了所有可能的情况。使用CHARINDEX()
和LEFT()
函数:
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