我想纠正一些字符长度错误的列。
我的错误在哪里?
UPDATE tbl
SET column = (SELECT (left(string, 3) +
left(right(string, 8), 6) +
right(string, 1))
FROM tbl
WHERE LEN(string) <> 10)
答案 0 :(得分:0)
您的子查询将找不到您正在更新的同一行,因此逻辑将不会如您所期望的那样。
好消息是,您根本不需要子查询,因为您一次只能运行一行。
UPDATE tbl
SET column = LEFT(column, 3) + LEFT(RIGHT(column, 8), 6) + RIGHT(column, 1)
WHERE LEN(column) <> 10