Странен проблем с MySql база данни

nov

New Member
Здравейте,


Става дума промяна на голям брой еднакви данни в полето ad_city в таблицата adsmanager_ads на компонента AdsManager

Искам навсякъде където градовете се виждат в полето ad_city с числа, да ги променя със съответните градове.

За целта използвах Find and Replace в MySql по следния начин:

UPDATE jos_adsmanager_ads SET ad_city = replace(ad_city,'1','СОФИЯ');

В полето ad_city имаме точно 7230 записа със стойност "1"

След използване на горната команда, резултата е следния:

Засегнати редове: 10 345 което е странно. Би следвало да са точно 7230.

Когато видях в базата какво се е получило, се оказа, че освен правилната замяна на "1" със "СОФИЯ", която искаме, някои редове в полето ad_city са заменени със следните стойности:

СОФИЯСОФИЯ
6СОФИЯ5
СОФИЯ6
45СОФИЯ

в което няма никаква логика на пръв поглед, и което очевидно води до завишената калкулация на засегнатите редове (10345), спрямо реалния брой редове/записи (7230) които са намерени със Search функцията във phpMyAdmin, и които желаем да променим заедно.

Пробвахме и следната вариация :
UPDATE `jos_adsmanager_ads` SET `ad_city` = replace(`ad_city`,'\1','\СОФИЯ');
както и други варианти на командата, но резултата беше един и същ.

Някой знае ли на какво може да се дължи този странен проблем?
 
Аз проблем не виждам, заместено е точно както искаш:

11 => СОФИЯСОФИЯ
615 => 6СОФИЯ5
16 => СОФИЯ6
451 => 45СОФИЯ
 
Странния "проблем" се дължи на неразбиране как работи заявката.
Пробвай така:
UPDATE `jos_adsmanager_ads` SET `ad_city` = 'СОФИЯ' WHERE `ad_city` = 1;
 

Горе