插入货币时要使用的SQL数据类型
我使用的是Oracle SQL数据库,必须在行中插入货币值(工资)。出于某种奇怪的原因,money命令不起作用,是否有其他替代方法可以使用它 数据输入格式:00000.000英镑插入货币时要使用的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
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)是个坏主意。它几乎排除了对该列进行范围查询的可能性。