就地更新SQL

就地更新SQL,sql,Sql,我想更正一些字符长度错误的列 我的语法哪里有错 UPDATE tbl SET column = (SELECT (left(string, 3) + left(right(string, 8), 6) + right(string, 1)) FROM tbl WHERE LEN(string) <> 10) 您的子查询将找不到您

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

我的语法哪里有错

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

您的子查询将找不到您正在更新的同一行,因此逻辑将不符合您的预期

好消息是,您根本不需要子查询,因为您一次只对一行进行操作

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

queryPlease标记dbms的末尾有一个额外的右括号。那里有些非ANSI SQL。。。