我有一个 MYSQL 数据库,其中负数括在括号中
例如。 (14,500) 应该是 -14500。
我将数字存储为 varchar。我正在尝试将所有数字转换为 double 或浮点格式,并用减号格式化负数。
我的代码:
select case
when substr(gross_d,1,1) = '(' then
ltrim('(') and rtrim(')') *-1
else
(gross_d)
end gross_d_num
from buy;
convert(gross_d_num,Double);
我当前方法的问题是所有带括号的负数都转换为零。有没有不同的方法来得到我的结果。
编辑:
我还删除了 *-1 以查看括号是否被删除并且我得到的值为零。
最佳答案
类似的东西
convert (
case
when gross_d LIKE '(%)' THEN CONCAT('-', REPLACE(REPLACE(gross_d, ')', ''), '(', ''))
else gross_d
end, decimal(19,6))
在这里,您仅修剪括号。当你乘以 -1 时,它会变成零
ltrim('(') and rtrim(')') *-1
关于mysql - 在 MYSQL 中将带括号的负数转换为减号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6901343/