数字转换的字符

时间:2014-11-28 05:44:46

标签: oracle oracle11g business-intelligence business-objects

我有一个列为例如值: * 0.4176, * 0.2734, $ 1.53 $ 122.00, D0.4645, D.2464, * 0.3426, * 0.3426, $ 0.0 / $ 2.50 -0.0 / -2.50

我需要编写一个查询来只显示数字格式的数字部分。我想为业务对象中的主对象创建一个详细信息对象。 我尝试使用翻译,但它有很多硬编码和斜线创建问题,将其转换为TO_BINARY_DOUBLE。有没有其他方法可以避免硬编码并仍以数字格式显示数字?

2 个答案:

答案 0 :(得分:0)

试试这个:

SELECT TRANSLATE('*4176', ' */''', ' ') FROM DUAL;

当你在列中有符号*时就是这种情况,只是为了得到这个想法。对其他案例也进行一些翻译。

干杯

答案 1 :(得分:0)

我需要以下格式输出:
成本公式成本公式代码成本公式值成本计算 $ 520.80 $ 520.8
* 1 * 1
-0.0 / - $ 20 -0.0 / - $ 20 +0.0 / - $ 36 +0.0 / - $ 36

select 
cost_formula,
case
when TRANSLATE(COST_FORMULA,'1234567890.-+ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()~`_[]{};<>:"*$',' ')='/' 
then ''
else TRANSLATE(COST_FORMULA,'1234567890.-+',' ')
END code,
case
when TRANSLATE(COST_FORMULA,'1234567890.-+ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()~`_[]{};<>:"*$',' ')='/' 
then '0'
else TO_BINARY_DOUBLE(RTRIM(LTRIM(TRANSLATE(UPPER(COST_FORMULA),'ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()~`_[]{};<>:"*$','0'))))
END value,
case 
when TRANSLATE(COST_FORMULA,'1234567890.-+ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()~`_[]{};<>:"*$',' ')='/' 
then cost_formula
else ''
END Calculation
FROM RSE.RSE_SO_F_ORDERS;

我正在使用此查询来获取所需的格式。但数字部分抛出以下错误: ORA-00932:不一致的数据类型:预期的CHAR得到了BINARY_DOUBLE 00932. 00000 - “不一致的数据类型:预期%s获得%s”

我希望数字部分是浮动的。