我对 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/