2014-07-02 2 views
3

Je souhaite aligner une colonne dans ma table. Dans ce cas, « Titre »Comment aligner une colonne ajustée à droite

mysql> SELECT Titel, KuenstlerName from Bild; 
+--------------------------+---------------+ 
| Title     |   Artist| 
+--------------------------+---------------+ 
| Drei Musikanten   | Picasso  | 
| Buveuse assoupie   | Picasso  | 
| Die Flöte des Pan  | Picasso  | 
| Paolo als Harlekin  | Picasso  | 
| Die Umarmung    | Picasso  | 
| Sitzende Frau   | Picasso  | 
| Sternennacht    | van Gogh  | 
| Der Park     | Klingt  | 
| Liegender Hund im Schnee | Marc   | 
| Hauptweg und Nebenwege | Klee   | 
| Jungfrau im Baum   | Klee   | 
| Das gelbe Haus   | Klee   | 
+--------------------------+---------------+ 

Est-il possible d'aligner la colonne de gauche à droite, comme ceci:

+--------------------------+---------------+ 
| Title     | Artist  | 
+--------------------------+---------------+ 
|   Drei Musikanten| Picasso  | 
|   Buveuse assoupie| Picasso  | 
|   Die Flöte des Pan| Picasso  | 
+--------------------------+---------------+ 

Merci pour votre aide!

+0

sql est une base de données. Il gère les données, il n'est pas pour gérer l'affichage de celui-ci. Oui, vous pouvez remplir votre chaîne comme indiqué ci-dessous, mais cela modifie les données (ajoute des espaces) et non son affichage. Il ne fonctionnera également que dans des scénarios à polices fixes. – ToBe

Répondre

7

Si votre longueur Title est 150 alors requête comme ceci

SELECT LPAD(Titel,150,' ') as Titel , KuenstlerName from Bild; 

Vérifier Manual pour LPAD fonction .

+0

Merci, fonctionne comme prévu! – BlueFox

+0

Ma réputation est à un niveau faible up toote :-( – BlueFox

+0

Ne vous inquiétez pas pour ce que vous avez accepté est plus important pour les autres utilisateurs pour référence. – Sadikhasan

4

Si Titel est de 100 caractères, puis faire

SELECT 
    LPAD(Titel, 100, ' '), 
    ... 

ou

SELECT 
    RIGHT(CONCAT(REPEAT(' ', 100), Titel), 100), 
    ... 
+0

Les deux œuvres, merci! – BlueFox

+1

La deuxième option a fonctionné pour SQL sur iSeries DB2. Mon besoin n'était pas d'ajuster correctement le champ, mais plutôt une variable d'entrée entrant dans une requête. A travaillé merveilleusement. Autorisé l'optimiseur à utiliser l'index correct. – Michael

1

Je résolu la tâche comme ceci:

SELECT LPAD(Titel,(SELECT MAX(LENGTH(Titel)) FROM Bild),' ') AS Titel, CONCAT(Kuenstler.Vorname,' ',Kuenstler.Name) AS Kuenstler 
FROM Kuenstler 
INNER JOIN Bild ON Bild.Kuenstler = Kuenstler.KID;