[英]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.