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