2015-03-12 23 views
6

Tôi đang sử dụng cơ sở dữ liệu Oracle SQL và tôi phải chèn một giá trị tiền tệ (tiền lương) làm một phần của hàng. Đối với một số lý do kỳ lạ lệnh tiền không hoạt động, là có bất kỳ thay thế mà sẽ làm việc với điều này?Kiểu dữ liệu SQL để sử dụng khi chèn tiền

định dạng đầu vào dữ liệu: £ 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) 
        ); 
+0

Oracle, lời xin lỗi của tôi - cố định thẻ. – user3686991

+2

Oracle khuyến cáo sử dụng 'varchar2()' thay vì 'varchar()' cho các chuỗi, như một lưu ý. –

Trả lời

5

Nhìn vào dòng này

salary MONEY NOT NULL 

Không có datatype tiền hiện có.

Nếu bạn đang tìm kiếm thứ gì đó tương tự như SQL-Server loại tiền nhỏ, bạn muốn sử dụng Number(10,4) và sau đó định dạng số.

Bạn có thể định dạng số sử dụng chức năng to_char

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

Không có front-end cho ứng dụng này, chỉ cần cấu trúc cơ sở dữ liệu (tôi là một sinh viên vì vậy nó chỉ thực hành bằng cách sử dụng oracademy oracles) vì vậy tôi không thể phân tích chuỗi. – user3686991

+0

@ user3686991 xem chỉnh sửa. –

+0

Ví dụ: nếu đầu vào của tôi là: £ 45.000,00. Nó sẽ làm việc bằng cách sử dụng VARCHAR (7,2)? – user3686991

3

Lý do "lạ" rất đơn giản: There is no MONEY data type.

Loại dữ liệu thích hợp nhất cho giá trị tiền tệ sẽ là NUMBER (sử dụng thang tỷ lệ thích hợp). Vì đây là loại số thập phân loại dấu phẩy động, nên phù hợp hơn với các giá trị tiền tệ hơn các loại dấu phẩy động nhị phânBINARY_FLOATBINARY_DOUBLE.

Lưu ý, tuy nhiên, bạn vẫn sẽ cần phải phân tích cú pháp chuỗi đầu vào £00,000.000 cuối cùng phía trước của bạn và gửi nó như một giá trị số để back-end.

+0

Được rồi và định dạng chính xác để chèn một giá trị tiền tệ là £ 00,000.00 là bao nhiêu? – user3686991

+0

giá trị bằng tiền của số không chỉ đơn giản là '0'. –

Các vấn đề liên quan