为字符串的开头添加值

时间:2017-10-24 19:14:47

标签: sql oracle oracle11g

我正在使用价目表,并且我正在尝试在价值的开头添加一个£。这是Oracle 11g数据库所必需的。

to_char('£' + (case when web_cost.cost is null then 0 else 
round(web_cost.cost,2) end)) as unitcost

web_cost.cost应以下列格式生成值; 11.50,或0或空值可能。

上面的查询给出了无效的数字错误,我甚至在这段代码的每一部分都尝试过to_char,但仍然没有运气。

这是我的查询中唯一一部分,目前无效,有什么想法吗?

2 个答案:

答案 0 :(得分:2)

使用格式为TO_CHAR的{​​{1}}来显示货币。如果您的默认货币不是L,那么您可以提供第3个参数来设置£

SQL Fiddle

Oracle 11g R2架构设置

NLS_CURRENCY

查询1

CREATE TABLE web_cost ( cost ) AS
SELECT 1234.567   FROM DUAL UNION ALL
SELECT 98765      FROM DUAL UNION ALL
SELECT 34567.8901 FROM DUAL UNION ALL
SELECT NULL       FROM DUAL;

<强> Results

SELECT TO_CHAR(
         COALESCE( cost, 0 ),
         'FML999990D00',
         'NLS_CURRENCY=£'
       ) AS unitcost
FROM   web_cost

答案 1 :(得分:0)

您应该使用concat ||加入字符串

select '£' || to_char(case when web_cost.cost is null then 0 else 
      round(web_cost.cost,2) end)) as unitcost