更新SQL inplace

时间:2016-02-03 04:41:58

标签: sql

我想纠正一些字符长度错误的列。

我的错误在哪里?

UPDATE tbl 
SET column = (SELECT (left(string, 3) + 
                      left(right(string, 8), 6) + 
                      right(string, 1)) 
              FROM tbl  
              WHERE LEN(string) <> 10)

1 个答案:

答案 0 :(得分:0)

您的子查询将找不到您正在更新的同一行,因此逻辑将不会如您所期望的那样。

好消息是,您根本不需要子查询,因为您一次只能运行一行。

UPDATE tbl 
 SET column = LEFT(column, 3) + LEFT(RIGHT(column, 8), 6) + RIGHT(column, 1)
WHERE LEN(column) <> 10