Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Заменить первый символ в поле  [new]
Александра2393
Member

Откуда:
Сообщений: 16
Добрый день!
Необходимо в таблице изменить номера телефонов, так, чтобы все номера начинались с 7: 7861451232323 итд
В таблице есть номера, которые начинаются с 8, а есть вообще заданные кое-как, 9381231231, 2342, 99381231231, 29091212121212
Видимо, кто-то просто от фонаря эти номера набирал....
Поле имеет тип char(20). MS SQL Server 2005

Есть такой запрос:
UPDATE Table_1
SET phone=STUFF(phone,1,1,'7')
WHERE phone LIKE '8%';


Появляется ошибка следующего содержания:
Сообщение 512, уровень 16, состояние 1, процедура check__ab_kart, строка 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
30 мар 17, 15:06    [20351216]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
zby
Member

Откуда: Мск
Сообщений: 105
Александра2393,

Похоже, у вас совсем в другом месте ошибка
30 мар 17, 15:09    [20351227]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
gerogekochkin
Member

Откуда: Москва
Сообщений: 93
Александра2393,
сообщение об ошибке говорит нам, что вы представили лишь часть кода, который у вас есть.
Вы можете привести код целиком?
30 мар 17, 15:15    [20351266]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
buven
Member

Откуда:
Сообщений: 792
Александра2393
Добрый день!
Необходимо в таблице изменить номера телефонов, так, чтобы все номера начинались с 7: 7861451232323 итд
В таблице есть номера, которые начинаются с 8, а есть вообще заданные кое-как, 9381231231, 2342, 99381231231, 29091212121212
Видимо, кто-то просто от фонаря эти номера набирал....
Поле имеет тип char(20). MS SQL Server 2005

Есть такой запрос:
UPDATE Table_1
SET phone=STUFF(phone,1,1,'7')
WHERE phone LIKE '8%';


Появляется ошибка следующего содержания:
Сообщение 512, уровень 16, состояние 1, процедура check__ab_kart, строка 2
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.


Триггер есть на Table_1?
30 мар 17, 15:29    [20351362]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
Александра2393
Member

Откуда:
Сообщений: 16
buven,

да, есть триггер, я сразу на них внимания не обратила, в итоге, после отключения триггера запрос прошел успешно, замена выполнилась корректно. Проблема в том, что триггер ссылался на таблицу, в которой есть строки с одинаковыми id, как-то так.
30 мар 17, 16:12    [20351635]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
buven
Member

Откуда:
Сообщений: 792
Александра2393,

Отключать триггер не вчитываясь в него... Не боитесь за целостность данных?
Он же там не просто так...
30 мар 17, 18:54    [20352228]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
buven
Александра2393,

Отключать триггер не вчитываясь в него... Не боитесь за целостность данных?
Он же там не просто так...
Если бы видели этот триггер, то сказали бы:
"А! Делайте, что хотите! Хуже уже не будет."
30 мар 17, 19:43    [20352330]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
Александра2393
Member

Откуда:
Сообщений: 16
iap, это уж точно))
31 мар 17, 08:34    [20353140]     Ответить | Цитировать Сообщить модератору
 Re: Заменить первый символ в поле  [new]
Александра2393
Member

Откуда:
Сообщений: 16
buven, ну я на тестовой БД попробовала, данные не пострадали...вроде бы))))))))
31 мар 17, 08:35    [20353145]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить