|
David,boxes
The data that I tryied to send along is from a client's print to file
statements. The records that we are working against are from the total
on the statement. In the data field in question, there are 5 separatetotal
fields in an alpha field 100 bytes in length.
The SQL statement I had included with my attempt to share a few of the
records seems to be doing the trick. While it gives us 2 totals, it
works
for our purposes since the amounts are always in the same location. Wejust
change the byte location in the statement for the other 4 total fields.
select sum(decimal(replace((substring(fldname,1,17)),'$',''),9,2,'.'))
FROMfilename WHERE recid = '3' GROUP BY substring(fldname,18,1)
The recid field contains the area of the statement that the data was
located.
However, you did present some interesting ideas. I have not explored
the "locate" usage as of yet. I can think of a couple other
opportunities for
something like that. Thank you for that.data.
Nick Mart
----- Original Message -----
From: "David FOXWELL" <David.FOXWELL@xxxxxxxxx>
To: "Midrange Systems Technical Discussion" <midrange-l@xxxxxxxxxxxx>
Sent: Thursday, January 22, 2009 1:36 AM
Subject: RE: SQL String to numeric conversion
From the RPG list
I had a go at this :
My sample data : ( you didn't give exact information ) select $ from
dollars
....+....1
$
$ 302.54
$1.59-
$33.60-
My statement :
with mytable as (
SELECT length(trim($)), locate('.', trim($)), substr(trim($), 2,
locate('.', trim($))-2) as dollars , substr(trim($), locate('.',
trim($))+1, 2) as cents , right(trim($), 1) as sign FROM dollars
)
select case when sign ='-' then dollars concat cents
*-1 else dollars concat cents end as cents from mytable
Result is a list in cents :
...1....
CENTS
30.254
159-
3.360-
I didn't want to go further because we need more details about your
[mailto:rpg400-l-bounces@xxxxxxxxxxxx]
-----Message d'origine-----
De : rpg400-l-bounces@xxxxxxxxxxxx
sampleDe la part de Nick W Mart
Envoyé : mercredi 21 janvier 2009 16:21 À : RPG programming on the
IBM i / System i Objet : Re: SQL String to numeric conversion
I have more information regarding my previous question. Here is a
isof the actual data field.+....7....+....8....+....9....+...
....+....1....+....2....+....3....+....4....+....5....+....6....
INFO TO PRINT $1.59- $.00 $1.59-
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $33.60- $.00 $33.60-
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 !
$.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00 $.00 $.00 $.00
$.00$.00We came up with the following SQL statement that gave us 2
totals.select
sum(decimal(replace((substring(fldname,1,17)),'$',''),9,2,'.'))
FROMfilename WHERE recid = '3' GROUP BY substring(fldname,18,1)If
there
something that would be better, we would appreciate
thesuggestions.Nick
AMSubject:Mart----- Original Message -----From: "Nick W Mart"
<nickmart@xxxxxxxxxxxxxxx>To: "RPG programming on the AS400 / iSeries"
<rpg400-l@xxxxxxxxxxxx>Sent: Wednesday, January 21, 2009 8:07
textSQL String to numeric conversion> If I have a value of "$38.54-" in
a
allfield is there a way that youknow of in sql so that I can do a sum
on
http://archive.midrange.com/rpg400-l.>---------------------records?>> Thank you in advance.>> Nick Mar!
t> --> This is the RPG programming on the IBM i / System i
t> --> (RPG400-L)
mailinglist> To post a message email: RPG400-L@xxxxxxxxxxxx> To
mailinglist> subscribe, unsubscribe, or change list options,> visit:
mailinglist> http://lists.midrange.com/mailman/listinfo/rpg400-l> or
mailinglist> email: RPG400-L-request@xxxxxxxxxxxx> Before posting,
mailinglist> please take a moment to review the archives> at
mailinglist>
-----------------------------------------------------------mailinglist>
--------------------------------------------------------------------------------mailinglist> No virus found in this incoming message.Checked by AVG
mailinglist> -
mailinglist> http://www.avg.comVersion: 8.0.176 / Virus Database:
mailinglist> 270.10.10/1905 - Release Date: 1/20/20092:34 PM
--
This is the RPG programming on the IBM i / System i (RPG400-L)
mailing list To post a message email: RPG400-L@xxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/rpg400-l
or email: RPG400-L-request@xxxxxxxxxxxx Before posting, please take
a moment to review the archives at
http://archive.midrange.com/rpg400-l.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L)
mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxx To
subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please
take a moment to review the archives at
http://archive.midrange.com/midrange-l.
1/21/2009
No virus found in this incoming message.
Checked by AVG - http://www.avg.com
Version: 8.0.176 / Virus Database: 270.10.12/1908 - Release Date:
9:15 PMlist
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing
To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe,--
unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take
a moment to review the archives at
http://archive.midrange.com/midrange-l.
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.