計算欄位 (Computed Column) 指查詢時即時運算產生、不儲存於表中的虛擬欄位。MySQL 支援 CONCAT 串聯、四則運算、函數呼叫等,配合 AS 別名提升可讀性。
SELECT CONCAT(name, '(', country, ')') AS title
FROM company
ORDER BY name;
SELECT prod_num * prod_price AS total_price, prod_name
FROM products;
SELECT 3 * 2; -- 6
SELECT NOW(); -- 當前時間
SELECT CONCAT('Hello', ' ', 'World'); -- Hello World
-- 虛擬欄位 (查詢時計算,不佔空間)
ALTER TABLE orders ADD COLUMN total_price DECIMAL(10,2)
GENERATED ALWAYS AS (quantity * unit_price) VIRTUAL;
-- 儲存欄位 (寫入時計算,佔空間,可建索引)
ALTER TABLE orders ADD COLUMN total_price_stored DECIMAL(10,2)
GENERATED ALWAYS AS (quantity * unit_price) STORED;
CONCAT 任一參數為 NULL 結果為 NULL,建議用 COALESCE 或 CONCAT_WS。WHERE (虛擬欄位除非建立索引),需包裝子查詢或重寫條件。