Fonction SQL

Résolu
alexmilano Messages postés 445 Statut Membre -  
alexmilano Messages postés 445 Statut Membre -
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 !

5 réponses

  1. alexmilano Messages postés 445 Statut Membre 27
     
    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 +

    1
    1. alexmilano Messages postés 445 Statut Membre 27
       
      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
      0
  2. macgawel Messages postés 676 Statut Membre 89
     
    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.
    0
    1. alexmilano Messages postés 445 Statut Membre 27
       
      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 ...

      0
  3. macgawel Messages postés 676 Statut Membre 89
     
    Tu programmes en quel langage ?
    0
    1. alexmilano Messages postés 445 Statut Membre 27
       
      c'est du SQL sur SQL server 2005 ...

      0
  4. alexmilano Messages postés 445 Statut Membre 27
     
    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
    0
    1. JDG
       
      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'
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. alexmilano Messages postés 445 Statut Membre 27
     
    CE NE SONT PAS DES FONCTIONS SQL ... si ??

    0