首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 查詢結果直接顯示百分比:CONCAT + LEFT 字串技巧

     編輯:MySQL 資料庫相關知識

    需求場景

    報表直接輸出「投訴率 12.34%」格式,避免應用層二次格式化。

    核心函數

    • CONCAT(str1, str2, ...):字串拼接,任一參數為 NULL 則結果為 NULL
    • LEFT(str, len):從左截取指定長度字元

    實戰 SQL

    SELECT
        category,
        count,
        total,
        CONCAT(LEFT(count / total * 100, 5), '%') AS rate_percent
    FROM (
        SELECT
            complaint_type AS category,
            COUNT(*) AS count,
            (SELECT COUNT(*) FROM complaints) AS total
        FROM complaints
        GROUP BY complaint_type
    ) t;

    結果示例

    categorycounttotalrate_percent
    服務態度123100012.3%
    產品品質8710008.7%
    物流速度200100020.0%

    進階:ROUND 版 (更精確控制小數位)

    CONCAT(ROUND(count / total * 100, 2), '%') AS rate_percent
    -- 12.30%、8.70%、20.00%

    避坑提醒

    • total = 0 會除零錯誤 → NULLIF(total, 0) 或 CASE WHEN total=0 THEN '0%' ...
    • 整數除法截斷 → 任一運算元乘 1.0 或 CAST(... AS DECIMAL(10,4))
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved