Корекция на записи в БД

a_vel

Registered
Здравейте,
някой ще може ли да ми помогне имам в базата данни над 3500 записа където масово е объркано при превръщането на мм в инч и кг в pounds, ще се опитам да обясня по подробно :

таблицата се казва:

packaging


колоните:

Total_length

445,3 mm (17,95 inches)

а в действителност трябва да е 445,3 mm (17,53 inches)


Total_width

355,1 mm (14,55 inches)

а в действителност трябва да е 355,1 mm (13,98 inches)


Total_height

251 mm (9,96 inches)

а в действителност трябва да е 251 mm (9.88 inches)


Weight

13,21 kg (27,43 pounds)

а в действителност трябва да е 13,21 кг (29,12 pounds)


Имали лесен начин с заявки да мога да оправя нещата или да овивам мократа кърпа на главата и да почвам едно по едно да коригирам като изчислявам колко мм на колко инача и колко кг на колко pounds е равно.
 
Едва ли, но с прост регулярен израз може да ги вземеш и просто правиш един ъпдейт и това е, малко дървено, но върши работа :D :?:
 
joTunkiq каза:
Едва ли, но с прост регулярен израз може да ги вземеш и просто правиш един ъпдейт и това е, малко дървено, но върши работа :D :?:

Ако не е проблем, можели да го драснеш, не съм много на ти, мога да правя само елементарни неща :)
 
a_vel каза:
joTunkiq каза:
Едва ли, но с прост регулярен израз може да ги вземеш и просто правиш един ъпдейт и това е, малко дървено, но върши работа :D :?:

Ако не е проблем, можели да го драснеш, не съм много на ти, мога да правя само елементарни неща :)
За числа се ползват числови колони - int, decimal, float, etc...
(var)char/text/etc се ползват само когато ти трябва текст. А в случая ти трябват числа.
Превърни цялата колона в число (float) като запазиш само първото число от стринга. След това инчовете няма да ти трябват, ще можеш да ги извеждаш динамично.
 
Наистина ако може да ми го напишете с пример знам , че за някои е елементарно и го разбраха веднага, но :(
 
Код:
UPDATE table SET weight = SUBSTR(weight, 0, INSTR(weight, ' '))
* ' ' е с празно място вътре
От тук нататък имаш 2 възможности:

1. Направи полето decimal/float и в php си конвертирай нещата. Това е най-добрият вариант

Код:
ALTER TABLE table MODIFY weight DECIMAL(5,2)

2. Ако държиш да е както ти искаш

Код:
SET @const = 2.204;
UPDATE table SET weight = CONCAT(weight, ' kg (', weight*@const,' pounds)')
където @const ти е kg към pounds.

ВНИМАНИЕ късно е и може да съм допуснал грешка някъде, първо направи експорт! или сложи накрая на заявките по едно
Код:
WHERE id = 1
примерно, за да видиш дали всичко е наред само при един запис
 
lam3r4370 каза:
Код:
UPDATE table SET weight = SUBSTR(weight, 0, INSTR(weight, ' '))
* ' ' е с празно място вътре
От тук нататък имаш 2 възможности:

Като пусна така заявката, изтрива целия запис 445,3 mm (17,53 inches) , а трябва да изтрие (17,53 inches) и да остане 445,3 mm
 
Ок, първата заявка трябва да започва от 1, т.е.
Код:
UPDATE table SET weight = SUBSTR(weight, 1, INSTR(weight, ' ')), type='kg' WHERE INSTR(weight,'kg') > 0
И си направи поле type(varchar)

И после
Код:
SET @const = 2.204; 
UPDATE table SET weight = CONCAT(weight, ' kg (', weight*@const,' pounds)') WHERE type='kg'
По подобен начин и за mm

PS: Изобщо не е ОК така, но щом така искаш :)
 

Back
Горе