簡體   English   中英

LPAD / RPAD:對齊列

[英]LPAD/RPAD: Align column

我想對齊“ Gesamt”列:

SELECT k.KUNDENID AS ID, 
       vorname AS Vorname, 
       nachname AS Nachname, 
       CONCAT(IFNULL(ROUND(SUM(Betrag), 2), 0), LPAD('Euro', 4, ' ')) AS Gesamt  
FROM kunde k  
LEFT JOIN verkauf v ON k.KUNDENID = v.KUNDENID  
GROUP BY k.KUNDENID;

輸出:

+----+---------+-----------+-------------+
| ID | Vorname | Nachname  | Gesamt      |
+----+---------+-----------+-------------+
|  1 | Homer   | Simpson   | 20.95Euro   |
|  2 | Doug    | Heffernan | 120.50Euro  |
|  3 | Dexter  | Morgan    | 350.30Euro  |
|  4 | Sheldon | Cooper    | 1500.00Euro |
|  5 | Maurice | Moss      | 0.00Euro    |
+----+---------+-----------+-------------+

所以我想要的輸出看起來像:

+----+---------+-----------+--------------+
| ID | Vorname | Nachname  | Gesamt       |
+----+---------+-----------+--------------+
|  1 | Homer   | Simpson   |   20.95 Euro |
|  2 | Doug    | Heffernan |  120.50 Euro |
|  3 | Dexter  | Morgan    |  350.30 Euro |
|  4 | Sheldon | Cooper    | 1500.00 Euro |
|  5 | Maurice | Moss      |    0.00 Euro |
+----+---------+-----------+--------------+

如何正確對齊?

謝謝你的幫助!

通過串聯'<space>Euro'而不是LPAD('Euro',4,' ')來簡化concat,並在整個concat中添加一個LPAD以使其向右移動(您可以根據數據確定需要多少個字符為了對齊):

SELECT k.KUNDENID AS ID, 
       vorname AS Vorname, 
       nachname AS Nachname, 
       LPAD(
         CONCAT(IFNULL(ROUND(SUM(Betrag), 2), 0), ' Euro')
       , 13, ' ') AS Gesamt  
FROM kunde k  
LEFT JOIN verkauf v ON k.KUNDENID = v.KUNDENID  
GROUP BY k.KUNDENID;

移動LPAD() ,您需要它來處理整個結果,而不僅僅是在Euro

SELECT 
    k.KUNDENID AS ID, 
    vorname AS Vorname, 
    nachname AS Nachname, 
    LPAD(CONCAT(IFNULL(ROUND(SUM(Betrag), 2), 0), ' Euro'), 15) AS Gesamt  
FROM kunde k  
LEFT JOIN verkauf v ON k.KUNDENID = v.KUNDENID  
GROUP BY k.KUNDENID;

結果:

+----+---------+-----------+-----------------+
| ID | Vorname | Nachname  | Gesamt          |
+----+---------+-----------+-----------------+
|  1 | Homer   | Simpson   |      20.95 Euro |
|  2 | Doug    | Heffernan |     120.50 Euro |
|  3 | Dexter  | Morgan    |     350.30 Euro |
|  4 | Sheldon | Cooper    |    1500.00 Euro |
|  5 | Maurice | Moss      |       0.00 Euro |
+----+---------+-----------+-----------------+

為什么不使用asterisk (*)而不是空格,因為mySQL似乎忽略了LPAD()函數中的空格。

SELECT k.KUNDENID AS ID, 
   vorname AS Vorname, 
   nachname AS Nachname, 
   CONCAT(LPAD(IFNULL(ROUND(SUM(Betrag), 2), 0),15,'*', ' Euro') AS Gesamt  
FROM kunde k  
LEFT JOIN verkauf v ON k.KUNDENID = v.KUNDENID  
GROUP BY k.KUNDENID;

參見我的SqlFiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM