Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เพิ่มสัญลักษณ์ Euro และ Dollar ในคอลัมน์ MySQL ด้วย CASE WHEN

การเตรียมข้อมูล

mysql> CREATE TABLE DemoTable1874 (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Amount VARCHAR(100)
);

mysql> INSERT INTO DemoTable1874(Amount) VALUES('3450'), ('190'), ('7600'), ('4500');

อัปเดตเพิ่มสัญลักษณ์เงินตาม ID

mysql> UPDATE DemoTable1874 SET Amount = CASE
    WHEN Id = 1 THEN CONCAT('$', '', Amount)
    WHEN Id = 3 THEN CONCAT('€', '', Amount)
    ELSE Amount
END;
Query OK, 2 rows affected

ผลลัพธ์

mysql> SELECT * FROM DemoTable1874;
+----+---------+
| Id | Amount  |
+----+---------+
|  1 | $3450   |
|  2 | 190     |
|  3 | €7600   |
|  4 | 4500    |
+----+---------+

การใช้งาน CASE WHEN

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ...
    ELSE default_result
END

แนวทางที่ดีกว่า: แยกเก็บตัวเลขและสกุลเงิน

-- Schema แนะนำ
CREATE TABLE transactions (
    id INT PRIMARY KEY,
    amount DECIMAL(15,2) NOT NULL,    -- เก็บตัวเลขบริสุทธิ์
    currency CHAR(3) NOT NULL DEFAULT 'USD'  -- ISO 4217: USD, EUR, THB
);

-- แสดงผลพร้อมสัญลักษณ์
SELECT 
    id,
    amount,
    currency,
    CASE currency
        WHEN 'USD' THEN CONCAT('$', FORMAT(amount, 2))
        WHEN 'EUR' THEN CONCAT('€', FORMAT(amount, 2))
        WHEN 'THB' THEN CONCAT('฿', FORMAT(amount, 2))
        ELSE CONCAT(currency, ' ', FORMAT(amount, 2))
    END AS display_amount
FROM transactions;

ข้อดีของการแยกเก็บ

  • คำนวณทางคณิตศาสตร์ได้ตรง (SUM, AVG, คูณภาษี)
  • แปลงสกุลเงินได้ (Exchange Rate)
  • จัดรูปแบบแสดงผลตาม Locale
  • Validation และ Constraint ได้ชัดเจน

สัญลักษณ์สกุลเงิน Unicode

USD: $  (U+0024)
EUR: €  (U+20AC)
THB: ฿  (U+0E3F)
GBP: £  (U+00A3)
JPY: ¥  (U+00A5)
CNY: ¥  (U+00A5 - ใช้ร่วมกับ JPY)