Mysql更新列替换部分文本

标签 mysql sql replace

我对 sql 非常陌生,在执行以下任务时遇到了一些麻烦: 我有一列包含代表数字的文本值。这些数字的大小不同,有些是数千(例如 32.11k),有些是百万(例如 5.40M)。我想将它们转换为以千为单位的数字,这样 32.11k 将变为 32.11,5.40M 将变为 5400。

我以为这可能对数千人有效,但事实并非如此。

UPDATE table_name
SET column_name = REPLACE(column_name, 'k', '')

我还尝试过使用通配符(数百万)进行以下操作,但我想我一定做错了什么。

UPDATE table_name SET column_name = REPLACE(column_name,'.%M','.%')
WHERE column_name LIKE '%.%M'

最佳答案

您可以尝试以下UPDATE查询:

UPDATE yourTable
SET col = CAST(CASE WHEN col LIKE '%k' THEN CAST(REPLACE(col, 'k', '') AS DECIMAL(10,2))
                    WHEN col LIKE '%M'
                    THEN ROUND(1000*CAST(REPLACE(col, 'M', '') AS DECIMAL(10,2)), 2)
               END AS CHAR)
WHERE col LIKE '%k' OR col LIKE '%M'

此处演示:

SQLFiddle

关于Mysql更新列替换部分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41756315/

相关文章:

Javascript:在_之后替换字符

ruby - 如何进行忽略控制字符的文本搜索?

mysql - 替换MySQL中第n次出现的字符串

php - 上传文件后更新数据库的问题

php - foreach PHP 删除 MySQL 数据库

Mysql 月份数字到月份名称的转换

sql - 如何创建一个表,其中一列只有 3 个可能的给定值?

php - Laravel Eloquent HasOne::$id 未定义属性

c# - BULK INSERT 语法 SQL

mysql连接三个表,用它的值替换id