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

Chuyển số dương thành âm khi INSERT vào MySQL

Kỹ thuật: Nhân -1 trong SELECT ... INSERT

INSERT INTO bang_moi (cot1, cot_am)
SELECT cot1, (-1 * cot_goc) FROM bang_goc;

Ví dụ hoàn chỉnh

Bảng nguồn (giá trị dương)

+--------+-------+
| UserId | Value |
+--------+-------+
| 1      | 10    |
| 3      | 598   |
| 5      | 786   |
| 7      | 189   |
| 9      | 345   |
+--------+-------+

Tạo bảng đích và INSERT chuyển đổi

mysql> CREATE TABLE PositiveToNegativeValueDemo (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Money INT
);

mysql> INSERT INTO PositiveToNegativeValueDemo(Id, Money)
    -> SELECT UserId, (-1 * Value) FROM recordsDemo;

Kết quả

+------+-------+
| Id   | Money |
+------+-------+
| 1    | -10   |
| 3    | -598  |
| 5    | -786  |
| 7    | -189  |
| 9    | -345  |
+------+-------+

Các biến thể

  • Đổi dấu (giữ giá trị tuyệt đối): -1 * cot hoặc 0 - cot
  • Chỉ chuyển dương thành âm (giữ âm nguyên vẹn): CASE WHEN cot > 0 THEN -cot ELSE cot END
  • Chuyển âm thành dương: ABS(cot)

Ứng dụng thực tế

  • Kế toán: Ghi nợ (debit) là dương, có (credit) là âm
  • Chuyển đổi đơn vị: Celsius ↔ Fahrenheit offset
  • Game: Sát thương (dương) ↔ Hồi máu (âm)

Lưu ý: Kiểu dữ liệu cột đích phải đủ lớn (INT, BIGINT, DECIMAL) để chứa giá trị âm.