单独的美分和美元值 Oracle

Separate Cents and dollars values Oracle

我是 oracle 查询的新手,我想得到一些帮助,因为我完全被困住了。

我有一个产品 table,其中包含产品 ID、价格和产品名称:
我想使用 select oracle 查询将产品价格分成美元和美分。

我不知道怎么算,但我尝试了 TRUNC 函数,但我仍然无法获得美分值。

你能帮帮我吗

这是数据库 Table:

CREATE TABLE Products (
    ProductID int,
    Price varchar(255),
    ProductName varchar(255)
);
INSERT INTO Products VALUES (1,5.17,'Apple');
INSERT INTO Products VALUES (2,6.527,'Orange');
INSERT INTO Products VALUES (3,7.12,'Watermelon');
INSERT INTO Products VALUES (4,3.25,'Pear');
INSERT INTO Products VALUES (5,4.123,'Grape');

感谢您的帮助:)

查询:

Select productid,trunc(price) As  Dollars, nvl(substr(price - trunc(price),2),0) as Cents, ProductName As Product From Products;

输出:

PRODUCTID DOLLARS CENTS Product
1 5 17 Apple
2 6 527 Orange
3 7 12 Watermelon
4 3 25 Pear
5 4 123 Grape

描述:

我在这里 select ProductId,然后我使用 trunc 函数删除任何小数(只有 DOLLARS 值),然后我使用 nvl 函数来制作null 值的替换(如果数字中没有美分)它将被替换为 0 和行:substr(price - trunc(price),2) 将从 DOLLARS 值中减去全价以获得cents.

注:
您可以通过不同的方式解决此问题,其他功能请查看本文以获取更多信息:Link

这是你需要的。

select substr(price, 1, instr(price, '.')-1) dollars, substr(price, instr(price, '.')+1) cents,  round(substr(price, instr(price, '.')),2)* 100 cents_rounded
from products

PRICEVARHCAR2 一样?为什么?它 应该是 一个 NUMBER 因为它 一个数值。在那种情况下:

SQL> desc products
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 PRODUCTID                                          NUMBER(38)
 PRICE                                              NUMBER
 PRODUCTNAME                                        VARCHAR2(255)

SQL> SELECT productid,
  2         productname,
  3         price,
  4         --
  5         TRUNC (price) dollars,
  6         (price - TRUNC (price)) * 100 cents
  7    FROM products;

 PRODUCTID PRODUCTNAM      PRICE    DOLLARS      CENTS
---------- ---------- ---------- ---------- ----------
         1 Apple            5,17          5         17
         2 Orange          6,527          6       52,7
         3 Watermelon       7,12          7         12
         4 Pear             3,25          3         25
         5 Grape           4,123          4       12,3

SQL>

使用 TRUNC 获取美元价值,使用 MOD(取模)获取美分价值:

SELECT ProductID,
       ProductName,
       TRUNC( Price ) AS dollars,
       MOD( Price, 1 ) * 100 AS cents
FROM   Products

对于您的示例数据,输出:

PRODUCTID | PRODUCTNAME | DOLLARS | CENTS
--------: | :---------- | ------: | ----:
        1 | Apple       |       5 |    17
        2 | Orange      |       6 |  52.7
        3 | Watermelon  |       7 |    12
        4 | Pear        |       3 |    25
        5 | Grape       |       4 |  12.3

db<>fiddle here