2016-02-03 3 views
0

Я хочу исправить некоторые столбцы с неправильной длиной в символе.Обновление SQL inplace

Где моя вина в этом синтаксисе?

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

Просим обратить внимание на dbms. Некоторые не ANSI SQL там ... – jarlh

ответ

0

Ваш подзапрос не найдет ту же строку, которую вы обновляете, поэтому логика не будет такой, как вы ожидаете.

Хорошей новостью является то, что вам не нужен подзапрос, поскольку вы работаете только по одной строке за раз.

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

В конце запроса есть дополнительный закрывающий круглый скобок – alexyz78

+0

@ user601423 Упс, спасибо, исправлено. –

Смежные вопросы