单独的美分和美元值 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
PRICE
和 VARHCAR2
一样?为什么?它 应该是 一个 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
我是 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
PRICE
和 VARHCAR2
一样?为什么?它 应该是 一个 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