Bonjour
Existe-il en MS Sql l'equivalent des fonctions tres pratique RPAD et LPAD disponibles en MySql et Oracle ?
Bonjour
Existe-il en MS Sql l'equivalent des fonctions tres pratique RPAD et LPAD disponibles en MySql et Oracle ?
...répondu trop vite...
![]()
Non, mais vous avez SPACE, REPLICATE, RTRIM, LTRIM... pour faire ce genre de choses. Tout dépend de votre besoin !
Au pire, programmez là sous forme d'UDF.
A +
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
* * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *
Bonjour
RTRIM et LTRIM me semble l'inverse de ce que je recherche
L'idée en gros c'est que comme j'utilise un query dont le resultat constitue le body d'un mail, j'aimerais que les colonnes soient correctement allignées en longueur fixe et les chifres allignés a droite
En MySql je faisait cela acec des LTRIM
Un jeu de données éventuellement ?
++
Voici un exemple de résultat actuelEnvoyé par MikeDavem
Ce n'est evidemment pas tres joli
Les fonctions RPAD et LPAD en MySQL permettent d'avoir un bon alignement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Gewicht |ChauffeurID|ChauffeurName |Date -----------|-----------|--------------------------------------------------|----------------------- 1000| 6|GILBERT |2011-03-09 15:36:23.000 751| 7|PATRICK |2011-03-09 15:37:08.000 508| 23|FRANCIS |2011-03-09 04:53:15.000 4086| 23|FRANCIS |2011-03-10 10:24:55.000 (4 rows affected)
Bonjour
transtypez vos VARCHAR en CHAR, cela devrait suffire à aligner les caractères à gauche.
Pour les nombres, préfixez les par des espaces (taille voulue pour la colonne - nombre de caractères dans le nombre), ou alors faites un reverse du cast du reverse du cast:
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 DECLARE @Nombre INT = 123 DECLARE @Texte AS VARCHAR(20) = 'toto' SELECT REVERSE( CAST( REVERSE( CAST(@Nombre AS VARCHAR(10)) ) AS CHAR(10) ) ) + '|' + CAST(@Texte AS CHAR(20)) + '|' ----------------------------------------- -- 123|toto |
Ok merci
Je comprends donc qu'il n'y a hélas pas d'autres solution que d'infames brico
Je vais soit essayer de passer en HTML soit créer des Fonctions comme le suggérait SqlPro
Un SGBDR n'a pas pour vocation de présenter des données... SQL Server a peu de fonctions de manipulation de chaines de caractères, disons juste le strict minimum... donc oui, pour créer un mail bien présenté en TSQL ca sera certainement infame
Vous avez également la possibilité de joindre un fichier (le résultat d'une requête) à votre mail. c'est simple et pourrait être une solution à envisager dans votre cas. (un fichier CSV à ouvrir dans un tableur...)Je vais soit essayer de passer en HTML soit creer des Fonctions comme le suggerait SqlPro
Bonjour,
Entièrement d'accord avec aieeeuuuuu.
Le grand oublié de l'histoire, comme bien souvent : STUFF()
@++![]()
Merci a vous
Je vais me debrouiller avec tout ca !
Partager