Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cộng giá trị cột có hậu tố tiền tệ (€) trong MySQL

Vấn đề

Cột Price lưu chuỗi có ký hiệu tiền tệ (ví dụ: '€200.00'), cần tính tổng giá trị số.

Giải pháp: REPLACE + SUM

Tạo bảng:

CREATE TABLE DemoTable616 (Price VARCHAR(100));
INSERT INTO DemoTable616 VALUES ('€200.00'), ('€300.00'), ('€500.00');

Truy vấn tổng:

SELECT SUM(REPLACE(Price, '€', '')) AS Total_Price
FROM DemoTable616;

Kết quả:

+-------------+
| Total_Price |
+-------------+
| 1000        |
+-------------+

Giải thích

  • REPLACE(Price, '€', ''): Loại bỏ ký hiệu € → '200.00', '300.00', '500.00'.
  • MySQL tự ép kiểu chuỗi số thành DECIMAL khi dùng trong SUM().
  • Kết quả là số (không có ký hiệu tiền tệ).

Mở rộng: Nhiều loại tiền tệ

SELECT SUM(
    CAST(
        REPLACE(REPLACE(REPLACE(Price, '€', ''), '$', ''), '£', '')
    AS DECIMAL(10,2))
) AS Total_Price
FROM DemoTable616;

Best Practice: Thiết kế đúng

Tách cột số và cột currency:

CREATE TABLE prices (
    amount DECIMAL(10,2) NOT NULL,
    currency CHAR(3) NOT NULL DEFAULT 'EUR',  -- ISO 4217
    CHECK (currency IN ('EUR','USD','VND','GBP'))
);

Lợi ích: Index, tính toán nhanh, chính xác, hỗ trợ multi-currency, exchange rate.

Định dạng hiển thị (Formatting)

-- Thêm ký hiệu khi SELECT
SELECT CONCAT('€', FORMAT(SUM(amount), 2)) AS formatted_total
FROM prices
WHERE currency = 'EUR';

Kết quả: €1,000.00 (có dấu phẩy ngăn cách hàng nghìn).