Oracle 分开的美分和美元价值
我是oracle查询新手,我想得到一些帮助,因为我完全被卡住了 我有一个产品表,其中包含产品id、价格和产品名称: 我想使用select oracle查询将产品的价格分为美元和美分 我不知道该如何计算,但我尝试了TRUNC函数,但仍然无法获得美分值 你能帮帮我吗 以下是DB表:Oracle 分开的美分和美元价值,oracle,oracle11g,Oracle,Oracle11g,我是oracle查询新手,我想得到一些帮助,因为我完全被卡住了 我有一个产品表,其中包含产品id、价格和产品名称: 我想使用select oracle查询将产品的价格分为美元和美分 我不知道该如何计算,但我尝试了TRUNC函数,但仍然无法获得美分值 你能帮帮我吗 以下是DB表: CREATE TABLE Products ( ProductID int, Price varchar(255), ProductName varchar(255) ); INSERT INTO
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');
感谢您的帮助:查询:
输出:
产品ID
美元
美分
产品
1.
5.
17
苹果
2.
6.
527
橙色
3.
7.
12
西瓜
4.
3.
25
梨
5.
4.
123
葡萄
这是你需要的
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
价格为VARHCAR2?为什么?它应该是一个数字,因为它是一个数值。在这种情况下:
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 modulo获取美分值:
选择ProductID,
产品名称,
以美元表示的特鲁克价格,
MOD价格,1*100美分
来自产品
对于您的示例数据,输出:
DBFIDLE这是错误的,因为橙色不是6美元527美分。是的,我知道我认为这一切都是关于如何做到这一点,而不是他/她面临的主要问题。添加了美分四舍五入,你不需要四舍五入,可以得到精确的美分值,包括小数点。@MT0然后它会复制你的答案,我不希望这样做;它将获得与我的答案相同的输出,但将使用不同的方法字符串函数和算术函数。获得相同的输出并展示不同的实现方法并不存在剽窃。将价格放入字符串varchar是一个致命的设计缺陷。修正你的表格,使价格以数字的形式正确输入,具有适当的比例和精度。在oracle中,当您正确地将数据元素键入字符串时,它应该是VARCHAR2,而不是VARCHAR。
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>
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