การเตรียมข้อมูล
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)