从存储为文本的db中选择财务值

时间:2010-04-05 09:51:57

标签: sql mysql

我有一些财务值存储为mysql数据库中的文本。财务的重要性在于负数存储在封闭式中。有没有办法自动获取与该文本相关的数值。 (比如'5'应该重新调整为5,'(5)'应该返回为-5)

1 个答案:

答案 0 :(得分:2)

您可能知道在括号中包含负值是一个表示问题,甚至不应该 在数据库中开始。财务值的数字数据类型完全覆盖负范围,并且易于选择/操纵/聚合。

现在你遇到了一些可怕的事情:

SELECT
  CASE WHEN LEFT(val, 1) = '('
       THEN -1 * CAST( REPLACE((val, '(', ''), ')', '') AS DECIMAL(10,4))
       ELSE CAST( val AS DECIMAL(10,4) )
  END AS num_val
FROM
  val_table