2009-02-10 75 views

Trả lời

3

Bạn có thể truyền nội dung đó để giúp bạn không? Tiền có nghĩa là có số thập phân ...

DECLARE @test AS money 
SET @test = 3 
SELECT CAST(@test AS int), @test 
+0

Hi Tina, Bây giờ tôi đã nhận được kết quả mong đợi của mình. cảm ơn tuyệt vời .. :-) –

3

Trước hết, bạn không bao giờ nên sử dụng kiểu dữ liệu tiền. Nếu bạn thực hiện bất kỳ phép tính nào, bạn sẽ nhận được kết quả cắt ngắn. Chạy phần sau đây để thấy những gì tôi có nghĩa là

DECLARE 
    @mon1 MONEY, 
    @mon2 MONEY, 
    @mon3 MONEY, 
    @mon4 MONEY, 
    @num1 DECIMAL(19,4), 
    @num2 DECIMAL(19,4), 
    @num3 DECIMAL(19,4), 
    @num4 DECIMAL(19,4) 

    SELECT 
    @mon1 = 100, @mon2 = 339, @mon3 = 10000, 
    @num1 = 100, @num2 = 339, @num3 = 10000 

    SET @mon4 = @mon1/@mon2*@mon3 
    SET @num4 = @num1/@num2*@num3 

    SELECT @mon4 AS moneyresult, 
    @num4 AS numericresult 

Output: 2949,0000 2949,8525

Bây giờ để trả lời câu hỏi của bạn (đó là một chút mơ hồ), các kiểu dữ liệu tiền luôn có hai địa điểm sau dấu thập phân. Sử dụng kiểu dữ liệu nguyên nếu bạn không muốn phần phân đoạn hoặc chuyển đổi thành int.

Có lẽ bạn muốn sử dụng kiểu dữ liệu thập phân hoặc số?

+1

Microsoft Dynamics sử dụng loại dữ liệu tiền. Tôi thấy hôm nay. –

+2

Làm thế nào hợp lệ là nó thực sự muốn nhiều $ 450,50 * $ 32,76, tôi ngồi đây trong một thời gian suy nghĩ của bất cứ lúc nào tôi thực sự muốn nhiều giá trị tiền với nhau, hoặc chia chúng. Tôi đã sử dụng sql ví dụ của bạn và thay đổi */để sử dụng + - và thậm chí bao bọc chúng trong một * và/và các giá trị cho mỗi lần khớp. –

+0

Để biết các nhận xét chi tiết về câu trả lời này, hãy xem [câu trả lời này] (http://stackoverflow.com/questions/582797/should-you-choose-the-money-or-decimalx-y-datatypes-in-sql-server) –

0

Điều này có vẻ như là vấn đề về tạo hình cho tôi.
Theo loại tiền của SQL Server có liên quan 0 == 0.00

Nếu bạn đang cố gắng hiển thị 0 nói C# thay vì 0,00 bạn nên chuyển đổi thành chuỗi và định dạng theo ý muốn. (Hoặc cắt ngắn nó.)

24

chuyển đổi tiền bình thường mà vẫn duy trì xu cá nhân:

SELECT convert(varchar(30), moneyfield, 1) 

Tham số cuối cùng quyết định những gì các định dạng đầu ra trông giống như:

0 (mặc định) Không dấu phẩy mỗi ba chữ số bên trái của dấu thập phân và hai chữ số ở bên phải dấu thập phân; ví dụ: 4235,98.

1 Mỗi ba chữ số ở bên trái dấu thập phân và hai chữ số ở bên phải dấu thập phân; ví dụ: 3,510,92.

2 Không có dấu phẩy mỗi ba chữ số ở bên trái dấu thập phân và bốn chữ số ở bên phải dấu thập phân; ví dụ: 4235.9819.

Nếu bạn muốn cắt ngắn đồng xu, và đếm trong bảng, bạn có thể sử dụng làm tròn đến đồng bảng Anh gần nhất, sàn cho toàn bộ bảng Anh thấp nhất, hoặc trần để làm tròn lên bảng:

SELECT convert(int, round(moneyfield, 0)) 
SELECT convert(int, floor(moneyfield)) 
SELECT convert(int, ceiling(moneyfield)) 
+0

Điều này sẽ hoạt động nếu bạn muốn loại bỏ tất cả các giá trị penny, và không JUST khi nó là 0,00. Xem câu trả lời của tôi cho điều đó. –

0

Dường mặc dù giới hạn nội tại của kiểu dữ liệu tiền, nếu bạn đã sử dụng nó (hoặc đã thừa hưởng nó như tôi có), câu trả lời cho câu hỏi của bạn là, sử dụng DECIMAL.

-1

bạn có thể sử dụng một trong hai

SELECT PARSENAME('$'+ Convert(varchar,Convert(money,@MoneyValue),1),2) 

hoặc

SELECT CurrencyNoDecimals = '$'+ LEFT(CONVERT(varchar, @MoneyValue,1),  
     LEN (CONVERT(varchar, @MoneyValue,1)) - 2) 
0

Bạn có thể thử như thế này:

SELECT PARSENAME('$'+ Convert(varchar,Convert(money,@MoneyValue),1),2) 
1

tôi thấy approach này trực tiếp và hữu ích.

CONVERT (VARCHAR (10), CHUYỂN ĐỔI (TIỀN, fieldname)) AS GIÁ

0

Tôi có vấn đề này là tốt, và đã vấp lên trong một thời gian vào nó. Tôi muốn hiển thị 0,00 là 0 và nếu không giữ dấu thập phân. Các mục sau không hoạt động:

CASE WHEN Amount= 0 THEN CONVERT(VARCHAR(30), Amount, 1) ELSE Amount END 

Do cột kết quả bị buộc phải là cột TIỀN. Để giải quyết nó, sau đây làm việc

CASE WHEN Amount= 0 THEN CONVERT(VARCHAR(30), '0', 1) ELSE CONVERT (VARCHAR(30), Amount, 1) END 

mattered này vì cột đích cuối cùng của tôi là một VARCHAR (30), và người tiêu dùng của cột đó sẽ lôi ra nếu một lượng là '0.00' thay vì '0'.

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