插入货币时要使用的SQL数据类型

插入货币时要使用的SQL数据类型,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我使用的是Oracle SQL数据库,必须在行中插入货币值(工资)。出于某种奇怪的原因,money命令不起作用,是否有其他替代方法可以使用它 数据输入格式:00000.000英镑 CREATE TABLE staff (staffno CHAR(6) NOT NULL , staffsurname VARCHAR(8) NOT NULL , staffforename VARCH

我使用的是Oracle SQL数据库,必须在行中插入货币值(工资)。出于某种奇怪的原因,money命令不起作用,是否有其他替代方法可以使用它

数据输入格式:00000.000英镑

CREATE TABLE staff
                   (staffno CHAR(6) NOT NULL
                    , staffsurname VARCHAR(8) NOT NULL
                    , staffforename VARCHAR(7) NOT NULL
                    , salary MONEY NOT NULL
                    , PRIMARY KEY (staffno)
                   );
“奇怪”的原因很简单:

最适合货币价值的数据类型是(使用适当的尺度)。由于它是十进制浮点类型,因此比二进制浮点类型
binary\u FLOAT
binary\u DOUBLE
更适合于货币值

但是请注意,您仍然需要在前端解析输入字符串
.00000.000
,并将其作为数值发送到后端。

请看这一行

salary MONEY NOT NULL
没有现有的货币数据类型

如果要查找类似于SQL Server的
small money type的内容,请使用
Number(10,4)
,然后格式化该数字

您可以使用
to_char
函数格式化数字

select to_char(yourColumn, '$99,999.99') from yourTable where someCondition

Oracle,我的道歉-修复了标记。Oracle建议对字符串使用
varchar2()
而不是
varchar()
,作为注释。好的,插入货币值0000000的正确格式是什么?货币值为零只是
0
。此应用程序没有前端,只是构建数据库(我是一名学生,只是在练习使用oracles iacademy),所以我无法解析字符串。例如,如果我的输入是:45000.00英镑。使用VARCHAR(7,2)可以吗?@user3686991 VARCHAR没有十进制类型,它只是字符。如果您想使用符号和逗号等存储数据,可以将其存储为
VARCHAR(15)
。请注意,15可能不是正确的长度,请将其更改为您希望允许的任何限制。我认为使用
VARCHAR
(实际上,
VARCHAR2
,因为它是Oracle)是个坏主意。它几乎排除了对该列进行范围查询的可能性。