[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2005
    Beiträge
    4

    Wink QRY negative Zahl mit digits umwandeln und - nicht verlieren

    hi *all,
    möchte im QRY ein neg. num feld (z.b. -1000) in ein char umwandeln, dabei verliert er aber das "-".


    mfg

    Ludwig

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    746
    das ist eher ein Fall für SQL oder QQMQRY:
    select char(zoned(feldx, 11, 2)) from ...

    Gruß,
    Robert

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Kleiner Nachteil der Funktion "char": sie liefert die Zahl linksbündig unformatiert.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    May 2005
    Beiträge
    5

    Thumbs up mit CAST kommt aus das Vorzeichen mit

    Hallo,
    die char-Funktion hat Nachteile, die beim CAST nicht auftreten.

    Beispiel:
    Feld number ist ein numerisches Feld mit negativen Werten.

    SELECT CAST(number AS CHAR(10))
    FROM lib/table

    So long,
    Uwe

  5. #5
    Registriert seit
    May 2005
    Beiträge
    5

    Smile sorry, das war nicht die ganze Wahrheit

    Da war ich wohl etwas zu voreilig.
    Beim CAST stehen die Werte natürlich linksbündig, was nicht unbedingt schön aussieht.
    Hier kommt jetzt aber die Lösung, wie das ganze rechtsbündig zu stellen ist.
    Annahme:
    Feld number ist decimal(12, 2) definiert.
    Für die Zeichendarstellung brauchen wir inklusive Vorzeichen 13 Stellen.
    Der "Trick" ist, dass man die Länge des Wertes feststellt und dann die danach folgenden Leerzeichen im Ergebnis zuerst ausgibt und dann erst die eigentlich Zahl:

    SELECT
    SUBSTR(cast(number as character(13)),
    length(trim(cast(number as character(13))))+1,
    13-length(trim(cast(number as character(13))))
    concat
    LEFT(cast(number as character(13)),
    length(trim(cast(number as character(13))))),
    cast(number as character(13))
    FROM lib/table

    Schönen Abend noch
    Uwe

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Dann würde ich doch den etwas einfacheren Weg gehen:

    select concat(digits(mynum),
    case when mynum<0 then '-' else '+' end)
    from myfile
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    May 2005
    Beiträge
    5

    nun doch noch einmal, aber bitte mit Komma

    Hallo Fuerchau,
    bei Deiner Lösung stehen führende Nullen und vor allem fehlt das Dezimalzeichen (Komma).
    Hier ein verbessertes Beispiel von mir.
    Das Feld mynum ist als decimal(12, 2) definiert!
    Es werden somit 14 Stellen benötigt.

    Bei Verwendung von Digits sieht es so aus:
    mynum wird_zu
    1,23 000000000123+
    1324567890,12- 132456789012-
    2333312- 000002333312-


    So steht alles korrekt rechtsbündig, das Komma ist dabei und auch das Vorzeichen:

    SELECT mynum,
    SPACE(
    14-LENGTH(TRIM(CAST(mynum AS CHAR(14)))))
    CONCAT
    LEFT(CAST(mynum AS CHAR(14)),
    LENGTH(TRIM(CAST(mynum AS CHAR(14)))))
    FROM myfile

    Das ist zwar etwas kompliziert, aber es bringt ein schönes Ergebnis.
    Uwe

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wie immer gibts da viele Lösungen.
    Am besten wäre denn doch eine kleine (externe) SQL-Funktion, z.B. in RPGLE die das Ganze einfach als %editc intern auflöst.
    Mittels Überladungen (verschiedene Eingabeparameter) kann man mehrere Varianten erstellen und man braucht sich um diese ganzen Längen und Concat's nicht zu kümmern.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Negative Zahlen mit EDTWRD
    By Allrounder in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 22-11-06, 12:10
  2. Qry Layout
    By Jump4738 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 22-08-06, 08:08
  3. "13.456,78" in Zahl 12345678 umwandeln
    By AndreasH in forum IBM i Hauptforum
    Antworten: 13
    Letzter Beitrag: 16-05-05, 12:22
  4. Spools 1:1 in *PDF umwandeln
    By Kilianski in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 13-01-05, 13:55
  5. Frage zur Formatierung mit Funktion DIGITS in QRY
    By hs in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 14-02-02, 06:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •