我有一个列为例如值: * 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。有没有其他方法可以避免硬编码并仍以数字格式显示数字?
答案 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”
我希望数字部分是浮动的。