更新SQL中的第n个字符

时间:2018-04-03 14:13:19

标签: sql sql-server sql-server-2008

UPDATE DocArrangement_History
SET TicketNumber = STUFF(14545, 14, 14, ' ')
WHERE TicketNumber = has / in the 14th digit 

所以我想更新我的数据库并删除' /'在我们的一个记录中包含' /'。这样做最有效的方法是什么?我不完全确定使用STUFF功能是否最好。

这是需要更改的票号的示例

1317023835606 / 606-607

2 个答案:

答案 0 :(得分:2)

试试这个。它将仅检查第14个字符,并删除它:

UPDATE DocArrangement_History
   SET TicketNumber = SUBSTRING(TicketNumber, 1, 13) +
                      SUBSTRING(TicketNumber, 15)
 WHERE SUBSTRING(TicketNumber, 14, 1) = '/'

答案 1 :(得分:2)

这应该可以正常工作,STUFFREPLACESUBSTRING可以完成这项工作。

DECLARE @Test TABLE (TicketNumber VARCHAR(50) NOT NULL);

INSERT @Test (TicketNumber)
VALUES ('1317023835606/606-607');

SELECT TicketNumber
FROM @Test;
-- 1317023835606/606-607

UPDATE @Test
SET TicketNumber = STUFF(TicketNumber, 14, 1, '')
WHERE TicketNumber LIKE '_____________/%';

SELECT TicketNumber
FROM @Test;
-- 1317023835606606-607