Oracle pl/sql查询向数字添加空格,使其右对齐

use*_*992 0 sql oracle plsql oracle11g

我有一个查询返回一个数字(16,2)数据类型的价格.

所以查询SELECT PRICE FROM PRODUCT;

它应该回来

   10.00
 1234.00     --> values are right aligned; space needs to be added to 10.00 
                 to align it with 1234.00
Run Code Online (Sandbox Code Playgroud)

要对齐多少空格是动态的我们知道数据类型的长度是(14,2),所以我想将数字转换为char并在数字的左边添加空格.

  SELECT LPAD(p.price , (17 - LENGTH(TO_CHAR(p.price))),' ')  FROM Product.
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的查询,但它没有给我正确的结果.

我只是想知道它有什么问题

D S*_*ley 5

LPAD将表达式的最终长度作为第二个参数,而不是要添加的字符数:

SELECT LPAD(TO_CHAR(p.price,'99999990D99'),17) FROM Product p
Run Code Online (Sandbox Code Playgroud)