Rechercher : dans
Par :

Fonction SQL

Dernière réponse le 25 jui 2008 à 13:24:45 alexmilano, le 5 jun 2008 à 16:08:55 
 Signaler ce message aux modérateurs

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 ;)


Windows c'est de la merde ?
alors notre monde est bien po***i, et toi aussi parce que si­ tu es la, c'est grâce à lui !

Meilleures réponses pour « fonction SQL » dans :
Oracle - Réinitialiser une séquence VoirPour réinitialiser un séquence SEQ crée à travers la commande : CREATE SEQUENCE SEQ; Il suffit de voir sa valeur actuelle via la commande : SELECT SEQ.CURRVAL FROM DUAL; Ensuite modifier la séquence en injectant l'option increment by en ajoutant...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...
SQL - Opérations ensemblistes VoirLes opérations ensemblistes Les opérations ensemblistes en SQL, sont celles définies dans l'algèbre relationnelle. Elles sont réalisées grâce aux opérateurs : UNION INTERSECT (ne fait pas partie de la norme SQL et n'est donc pas implémenté dans...

1

macgawel, le 5 jun 2008 à 16:20:40

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.

Répondre à macgawel

2

alexmilano, le 5 jun 2008 à 16:28:02

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 ...


Windows c'est de la merde ?
alors notre monde est bien po***i, et toi aussi parce que si­ tu es la, c'est grâce à lui !

Répondre à alexmilano

3

alexmilano, le 5 jun 2008 à 16:31:10

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 +


Windows c'est de la merde ?
alors notre monde est bien po***i, et toi aussi parce que si tu es la, c'est grâce à lui !

Répondre à alexmilano

4

alexmilano, le 5 jun 2008 à 17:42:04

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
Windows c'est de la merde ?
alors notre monde est bien po***i, et toi aussi parce que si tu es la, c'est grâce à lui !

Répondre à alexmilano

5

macgawel, le 5 jun 2008 à 17:46:45

Tu programmes en quel langage ?

Répondre à macgawel

6

alexmilano, le 6 jun 2008 à 09:15:41

C'est du SQL sur SQL server 2005 ...


Windows c'est de la merde ?
alors notre monde est bien po***i, et toi aussi parce que si­ tu es la, c'est grâce à lui !

Répondre à alexmilano

7

alexmilano, le 6 jun 2008 à 14:58:46

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
Windows c'est de la merde ?
alors notre monde est bien po***i, et toi aussi parce que si tu es la, c'est grâce à lui !

Répondre à alexmilano

8

JDG, le 25 jui 2008 à 13:16:54

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'

Répondre à JDG

9

 alexmilano, le 25 jui 2008 à 13:24:45

CE NE SONT PAS DES FONCTIONS SQL ... si ??


Windows c'est de la merde ?
alors notre monde est bien po***i, et toi aussi parce que si­ tu es la, c'est grâce à lui !

Répondre à alexmilano