Posez votre question Signaler

Fonction SQL [Résolu]

alexmilano 394Messages postés 14 septembre 2007Date d'inscription 18 novembre 2011Dernière intervention - Dernière réponse le 25 juil. 2008 à 13:24
Bonjour,
Je voudrais créer une fonction sql qui me permet de rentrer une valeur d'un champ et d'ajouter des espaces sur le nombre de caractère restant :
je veux écrire le prix sur 15 caractères, donc je ferais un truc du genre : mafonction(Prix,15)
si mon prix est 2.0568 je voudrais qu'il me marque le prix + 9 espaces ...
Si vous voulez d'autre informations complémentaires dites moi ;)
A bientot, merci d'avance ;)
Lire la suite 

Fonction SQL »

9 réponses
Réponse
+1
moins plus
j'ai commencé comme ça si ça peut cous aider, même si je suis pas du tout sur de mon truc ^^


CREATE FUNCTION ADDSPACE

AS

BEGIN

-- ADDSPACE(@CHAMP, @NBR_CAR)

DECLARE @CHAMP nvarchar(MAX), @NBR_CAR int


BEGIN

SELECT ISNULL(@CHAMP,''), @NBR_CAR

IF @NBR_CAR < LEN(@CHAMP)
BEGIN
SET @CHAMP = LEFT(@CHAMP, @NBR_CAR)
END
ELSE
BEGIN
SET @CHAMP = @CHAMP +

alexmilano - 5 juin 2008 à 17:42
j'ai un truc correct :


ALTER FUNCTION ADDSPACE (@CHAMP nvarchar(MAX), @NBR_CAR int ) RETURNS nvarchar(MAX)

AS

BEGIN

-- ADDSPACE(@CHAMP, @NBR_CAR)

SET @CHAMP = LEFT(ISNULL(@CHAMP,''), @NBR_CAR)

WHILE LEN(@CHAMP) < @NBR_CAR
BEGIN
SET @CHAMP = @CHAMP + ' '
END

RETURN @CHAMP

END


mais j'ai l'impression que sa boucle a l'infini ... pk ???

Merci de votre aide
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour.

J'ai du mal à saisir l'intérêt de ce genre de fonctions pour du SQL.
Tu veux en faire quoi ? Si tu rajoutes des espaces avant/après le nombre, tu vas stocker une chaîne de caractères, et tu perds une bonne partie de l'intérêt de la base de données.

A la limite, c'est le genre de chose que tu peux faire à l'affichage, mais surtout pas dans la BDD... Et pour l'affichage, ça dépend du langage de l'interface.
alexmilano - 5 juin 2008 à 16:28
C'est pour ecrire mon resultat dans un fichier texte, notepad, pour que tout soit aligné, cela sera intégré dans un autre logiciel qui prendra les textes sur un certain nombre de caractères, en voila l'intérêt ...

Il faut rajouter des espaces après la valeur du champ, et si la longueur de cette valeur dépasse ce nombre de caractere, il faut prendre juste la partie gauche de la valeur ...

Ajouter un commentaire
Réponse
+0
moins plus
Tu programmes en quel langage ?
alexmilano - 6 juin 2008 à 09:15
c'est du SQL sur SQL server 2005 ...

Ajouter un commentaire
Réponse
+0
moins plus
solution :

ALTER FUNCTION ADDSPACE (@CHAMP nvarchar(MAX), @NBR_CAR int ) RETURNS nvarchar(MAX)

AS

BEGIN

-- ADDSPACE(@CHAMP, @NBR_CAR)

SET @CHAMP = LEFT(ISNULL(@CHAMP,''), @NBR_CAR)

WHILE LEN(@CHAMP) < @NBR_CAR
BEGIN
SET @CHAMP = @CHAMP + 'µ'
END

RETURN REPLACE(@CHAMP, 'µ', ' ')

END
JDG - 25 juil. 2008 à 13:16
bonjour
pourquoi ne pas utiliser les fonctions standards LPAD ou RPAD pour des alphanumériques , ou un FORMAT pour les champs numériques ?

ex :
RPAD('TOTO',10) = 'TOTO '
LPAD('TOTO',10) = ' TOTO'
on peut appliquer RPAD ou LPAD à TO_CHAR( nombre)
ou to_char(nombre,'9999999999') : to_char(123,'9999999999') = ' 123'
Ajouter un commentaire
Réponse
+0
moins plus
CE NE SONT PAS DES FONCTIONS SQL ... si ??

Ajouter un commentaire
Ce document intitulé « fonction SQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook