数据类型变更的Sql迁移

问题描述 投票:0回答:1

我遇到过必须将数据库列“价格”的数据类型从字符串更改为小数的情况。问题是数据库中存在一些不正确的现有值,例如“120.45.32”,应将其更正为“12045.32”。我已经尝试过,CAST 为十进制,但它给出“120.00”。如何在迁移文件中解决此问题?

我尝试过CAST(价格为DECIMAL(10,2))。迁移有效,但所有现有的十进制值都会替换为“.00”,例如 120.45 -> 120.00

mysql node.js migration
1个回答
0
投票

就像 Barmar 所说,你需要删除所有第一个点。

CREATE TABLE Vale (text_1 varchar(10));
INSERT INTO Vale VALUES ('120.45.32')

SELECT * FROM Vale
文本_1
120.45.32
UPDATE Vale 
SET text_1 = regexp_replace(text_1,'[\.]','',1,1)
WHERE    LENGTH(text_1)
            - LENGTH( REPLACE ( text_1, ".", '') )  = 2;
SELECT * FROM Vale
Rows matched: 1  Changed: 1  Warnings: 0
文本_1
12045.32

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.