SQL更新列两次

时间:2010-12-14 09:58:48

标签: sql sql-update

表格(Tab1)中有一个字符串列(Col1)。我想写一个删除'%'或'&'的脚本字符串值中的字符。

选择此项如下:

SELECT REPLACE( Tab1.Col1, '&', ''), 
       REPLACE(Tab1.Col1, '%', '')
FROM Table1 Tab1
WHERE Tab1.Col1 like '%[&]%' 
      OR Tab1.Col1 like '%[%]%'

这看起来是否正确?如果是这样我将如何将其转换为任何更新语句?我尝试了以下方法:

UPDATE Tab1
SET Tab1.Col1 =  REPLACE( Tab1.Col1, '&', ''),  
    Tab1.Col1 = REPLACE (Tab1.Col1, '%', '')
FROM Table1 Tab1
WHERE Tab1.Col1 like '%[&]%' 
      OR Tab1.Col1 like '%[%]%'

这不起作用,因为您无法在SET中两次更新列。 有没有其他方法可以做到这一点?我知道我可能在这里做些傻事,为我的无知道歉。

提前致谢。

3 个答案:

答案 0 :(得分:5)

这应该有效。 Replace返回一个字符串,您可以再次将其传递给另一个替换函数。

UPDATE Tab1 
    SET Tab1.Col1 =  REPLACE(REPLACE( Tab1.Col1, '&', ''), '%', '') 
    FROM Table1 Tab1 
    WHERE Tab1.Col1 like '%[&]%' OR Tab1.Col1 like '%[%]%'

答案 1 :(得分:1)

 UPDATE Tab1
 SET Tab1.Col1 =  REPLACE(REPLACE( Tab1.Col1, '&', ''), '%', '') 
 FROM Table1 Tab1
 WHERE Tab1.Col1 like '%[&]%' 
  OR Tab1.Col1 like '%[%]%'

答案 2 :(得分:0)

由于您没有说明您使用的是哪种RDBMS,因此我避免使用明显不可移植的内容:

UPDATE Tab1 
SET Tab1.Col1 = REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '') 
WHERE Tab1.Col1 <> REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '');