Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/03/2011, 21h15   #1
Membre Expert
 
Inscription : octobre 2007
Messages : 3 937
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 3 937
Points : 1 905
Points : 1 905
Par défaut RPAD LPAD comme MySql ou Oracle

Bonjour

Existe-il en MS Sql l'equivalent des fonctions tres pratique RPAD et LPAD disponibles en MySql et Oracle ?
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
olibara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 21h25   #2
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
...répondu trop vite...
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2011, 21h28   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/03/2011, 21h34   #4
Membre Expert
 
Inscription : octobre 2007
Messages : 3 937
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 3 937
Points : 1 905
Points : 1 905
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
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
olibara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h27   #5
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Un jeu de données éventuellement ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 10h43   #6
Membre Expert
 
Inscription : octobre 2007
Messages : 3 937
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 3 937
Points : 1 905
Points : 1 905
Citation:
Envoyé par MikeDavem
Un jeu de données éventuellement ?
Voici un exemple de résultat actuel
Ce n'est evidemment pas tres joli

Les fonctions RPAD et LPAD en MySQL permettent d'avoir un bon alignement.

Code :
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)
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
olibara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 11h01   #7
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
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 :
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                |
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 11h25   #8
Membre Expert
 
Inscription : octobre 2007
Messages : 3 937
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 3 937
Points : 1 905
Points : 1 905
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
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
olibara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/03/2011, 11h33   #9
Membre Expert
 
Inscription : janvier 2010
Messages : 1 084
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : janvier 2010
Messages : 1 084
Points : 1 573
Points : 1 573
Citation:
Envoyé par olibara Voir le message
Ok merci
Je comprends donc qu'il n'y a hélas pas d'autres solution que d'infames brico :
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

Citation:
Je vais soit essayer de passer en HTML soit creer des Fonctions comme le suggerait SqlPro
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...)
aieeeuuuuu est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/03/2011, 13h37   #10
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 667
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 667
Points : 8 715
Points : 8 715
Bonjour,

Entièrement d'accord avec aieeeuuuuu.
Le grand oublié de l'histoire, comme bien souvent : STUFF()

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/03/2011, 14h05   #11
Membre Expert
 
Inscription : octobre 2007
Messages : 3 937
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 3 937
Points : 1 905
Points : 1 905
Merci a vous

Je vais me debrouiller avec tout ca !
__________________
« Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)
olibara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h22.


 
 
 
 
Partenaires

Hébergement Web