如何移除小数点并更新数据库表中4个VARCHAR字段的已有记录?
移除VARCHAR字段中的小数点并更新记录
针对你的需求(将VARCHAR(7)类型的4个字段中带小数点的内容转为无小数点格式,如D21.3→D213),以下是主流数据库的实现方案:
MySQL/MariaDB
使用REPLACE()函数替换字段中的小数点为空字符串:
UPDATE your_table SET col1 = REPLACE(col1, '.', ''), col2 = REPLACE(col2, '.', ''), col3 = REPLACE(col3, '.', ''), col4 = REPLACE(col4, '.', '');
验证结果(执行更新前建议先跑此查询):
SELECT col1, REPLACE(col1, '.', '') AS cleaned_col1, col2, REPLACE(col2, '.', '') AS cleaned_col2, col3, REPLACE(col3, '.', '') AS cleaned_col3, col4, REPLACE(col4, '.', '') AS cleaned_col4 FROM your_table;
SQL Server
语法与MySQL一致,同样用REPLACE():
UPDATE your_table SET col1 = REPLACE(col1, '.', ''), col2 = REPLACE(col2, '.', ''), col3 = REPLACE(col3, '.', ''), col4 = REPLACE(col4, '.', '');
验证查询:
SELECT col1, REPLACE(col1, '.', '') AS cleaned_col1, col2, REPLACE(col2, '.', '') AS cleaned_col2, col3, REPLACE(col3, '.', '') AS cleaned_col3, col4, REPLACE(col4, '.', '') AS cleaned_col4 FROM your_table;
Oracle
Oracle的REPLACE()函数用法相同:
UPDATE your_table SET col1 = REPLACE(col1, '.', ''), col2 = REPLACE(col2, '.', ''), col3 = REPLACE(col3, '.', ''), col4 = REPLACE(col4, '.', '');
验证查询:
SELECT col1, REPLACE(col1, '.', '') AS cleaned_col1, col2, REPLACE(col2, '.', '') AS cleaned_col2, col3, REPLACE(col3, '.', '') AS cleaned_col3, col4, REPLACE(col4, '.', '') AS cleaned_col4 FROM your_table;
关键注意事项
- 数据备份:执行更新前务必备份数据或在测试环境验证,避免误操作导致数据丢失。
- 长度检查:由于字段是
VARCHAR(7),需确保替换后的字符串长度不超过7位。例如D123.456替换后为D123456(长度7)符合要求,但如果原数据更长,部分数据库会截断或报错,需提前排查。 - 无小数点记录:
REPLACE()不会修改本身没有小数点的记录,无需额外过滤条件。
内容的提问来源于stack exchange,提问作者Krishna
相关产品推荐
相关产品推荐

