varchar列的SQL更新

时间:2016-06-01 19:12:13

标签: sql sql-server-2005 sql-update

我想将AttachmentCopyLoc列的字符串从D:\IT\Public\FTX_RobotAlerts\336更改为V:\IT\Public\FTX_RobotAlerts\336,此处只更改为D到V,其余字符串相同(我不会发生事件)想要改变它。)

我该怎么做?

提前感谢您的帮助。

enter image description here

4 个答案:

答案 0 :(得分:2)

确切的语法取决于平台,但它类似于

UPDATE {table}
SET AttachmentCopyLoc = REPLACE ( AttachmentCopyLoc , 'D:' , 'V:' )  
WHERE AttachmentCopyLoc LIKE 'D:%'

答案 1 :(得分:1)

在SQL Server中,我建议使用stuff()

update t
    set AttachmentCopyLoc = stuff(AttachmentCopyLoc, 1, 1, 'V')
    where AttachmentCopyLoc like 'D:%';

此版本有两个优点:

  1. 使用STUFF()可确保仅替换第一次出现的'D:'。不可否认,这个子字符串不太可能在列中出现多次,但为什么要冒这个机会?
  2. LIKE的使用允许使用AttachmentCopyLoc上的索引(如果有的话)并且使用hte索引是合适的。

答案 2 :(得分:0)

另一种方式是基本字符串操作

UPDATE {table}
SET AttachmentCopyLoc ='V' + substring(AttachmentCopyLoc,2,len(AttachmentCopyLoc )) 
where AttachmentCopyLoc like 'D%'

答案 3 :(得分:0)

这只会改变字符串的第一个字母:

update <tablename>
set AttachmentCopyLoc = 'V'+substring(AttachmentCopyLoc,2,len(AttachmentCopyLoc)-1)