mysql - 在 MYSQL 中将带括号的负数转换为减号

标签 mysql negative-number

我有一个 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/

相关文章:

java - 1000 * 60 * 60 * 24 * 30 结果为负数

java - 在 Java 中四舍五入后为负零?

mysql - 来自 MYSQL 数据库的 MS Access 报告

php - 将电子邮件地址输入 MYSQL 数据库

mysql - PHPMyAdmin 的 'Query took' 时间与 MySQL Profiling 信息不同

php - 使用 PHP 帮助获取当前日期

pattern-matching - OCaml:与任何否定匹配

c - 从用户那里读取号码

java - 解析JSON数据出错,org.json.json异常,java.lang.String无法转换

ruby - 简单除法的结果随负红利变化