插入钱时使用的SQL数据类型

use*_*991 7 sql oracle oracle-sqldeveloper

我正在使用Oracle SQL数据库,我必须插入货币值(薪水)作为行的一部分.由于一些奇怪的原因,钱命令不起作用,是否有任何替代品可以使用它?

数据输入格式:£00,000.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)
                   );
Run Code Online (Sandbox Code Playgroud)

Jea*_*ard 7

看看这一行

salary MONEY NOT NULL
Run Code Online (Sandbox Code Playgroud)

没有现有的money数据类型.

如果您正在寻找类似SQL-Server小钱类型的东西,您想使用a Number(10,4)然后格式化数字.

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

select to_char(yourColumn, '$99,999.99') from yourTable where someCondition
Run Code Online (Sandbox Code Playgroud)

  • 我认为使用`VARCHAR`(实际上是`VARCHAR2`,因为它是Oracle)是一个坏主意.它几乎排除了对该列进行范围查询. (2认同)

Hei*_*nzi 5

“奇怪”的原因很简单:没有MONEY数据类型

最适合货币价值的数据类型是NUMBER(使用适当的标度)。由于它是十进制浮点类型,因此比二进制浮点类型BINARY_FLOAT和更适合于货币值BINARY_DOUBLE

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