-
SQL Update Num mit Char
Hallo Leute,
ich quäle mich für gewisse Anforderungen von RPG auf SQL umzusteigen.
UPDATE LIB/FILE SET FeldN= substr(FeldA, 4, 13)
FeldN ist numerisch 13
FeldA ist alpha
Wie kann man in SQL Felder konvertieren ?
Danke.Mfg.
-
 Zitat von spiceisnice
Hallo Leute,
ich quäle mich für gewisse Anforderungen von RPG auf SQL umzusteigen.
UPDATE LIB/FILE SET FeldN= substr(FeldA, 4, 13)
FeldN ist numerisch 13
FeldA ist alpha
Wie kann man in SQL Felder konvertieren ?
Danke.Mfg.
Hallo,
alphanumerische Strings können über CAST in numerische Felder umbegesetzt werden:
Update MyLib/MyFile
Set FeldN = Cast(Substr(FeldA, 4, 13) as Dec(13, 0))
Birgitta
-
Es geht auch: dec(substr(FeldA, 4, 13), 13, 0)
Wichtig ist nur, dass rein numerische Daten im Feld stehen dürfen, sonst bricht der SQL ab.
-
Hallo,
zusätzlich geht (meist) auch das Robert Lemke Prinzip: "welches Schweinderl hätten Sie denn gerne?". Es gibt Cast Funktionen, die so heißen wie der Typ in den man umwandeln will. Am besten mal in die SQL Reference bei den Funktionen reinschauen!
mfg
Dieter Bender
 Zitat von B.Hauser
Hallo,
alphanumerische Strings können über CAST in numerische Felder umbegesetzt werden:
Update MyLib/MyFile
Set FeldN = Cast(Substr(FeldA, 4, 13) as Dec(13, 0))
Birgitta
-
 Zitat von BenderD
Hallo,
Es gibt Cast Funktionen, die so heißen wie der Typ in den man umwandeln will. Am besten mal in die SQL Reference bei den Funktionen reinschauen!
Nur noch eine Bemerkung dazu ob man CAST oder die entsprechende Funktion verwenden sollte:
Bei allen diesen Funktionen ist in der SQL-Referenz eine Note zu finden, die besagt, dass CAST der entsprechenden Funktion vorzuziehen sei, um maximale Portabilität zu erreichen.
NOTE:
Syntax alternatives:When the first argument is numeric, or the first argument is a string and the length argument is specified, the CAST specification should be used for maximal portability.
Birgitta
-
Naja, wenn ich meine Anwendung auch mal auf Oracle o.ä. laufen lassen will, darf ich wohl Feldtypen wie "decimal" nicht unbedingt verwenden.
Solange ich auf AS/400 (i5) bleibe, hoffe ich doch sehr stark, dass IBM die Kompatibilität nicht aus den Augen verliert.
-
Mit CAST oder DEC hats funktioniert. Wie geht man vor wenn der Text Blanks enthält wie zb. GLN 12 12345 12345 1. Numerisches Feld soll dann nur 1212345123451 enthalten ?
-
Tja, mit SQL schlechte Karten, da es keine Strip-Funktion gibt.
Wenn das Format immer konstant ist, kannst du per
dec(substr(feld, 5, 2) concat substr(feld, 8, 5) concat .....)
den Wert bekommen.
Ansonsten hilft dann wohl nur eine UDF (Userdefinied Function). Wie diese erstellt werden, siehe in der SQL-Referenz nach.
-
Hallo,
leider gibt es in SQL erst ab Release V5R3M0 eine Funktion REPLACE, die es ermöglicht Zeichen aus einem String zu entfernen.
PHP-Code:
D MyText S 50A inz('ABC XYZ 1234 567890 A')
*----------------------------------------------------------
C/EXEC SQL
C+ Set :MyText = Replace(:MyText, ' ', '')
C/End-Exec
C MyText Dsply
C Eval *INLR = *On
Wenn Du diese Funktionalität vor Release V5R3M0 unbedingt in SQL braucht, hast Du nur die Möglichkeit Dir eine User Defined Function (UDF) zu stricken.
Dabei kann es sich entweder um eine Funktion z.B. in RPG geschrieben, die als UDF registriert wird, oder die direkt in SQL geschrieben ist.
Die folgende Funktion müsste funktionnieren:
PHP-Code:
Create Function MyLib/RmvCharacter
(InString VarChar(100),RepChar VarChar(1))
returns varchar(100)
Language SQL
BEGIN
Declare OutStr varchar(100);
Declare StrPos integer;
Set OutStr = InString;
Set StrPos = -1;
While StrPos <> 0 Do
Set StrPos = locate(RepChar, OutStr, 1);
If StrPos > 1
and StrPos < Length(OutStr) - 1
Then Set OutStr = substr(OutStr, 1, StrPos - 1) concat
substr(OutStr, StrPos + 1,
Length(OutStr) - StrPos);
ElseIf StrPos = Length(Outstr)
Then Set OutStr = substr(OutStr, 1, StrPos - 1);
ElseIf StrPos = 1
Then Set OutStr = substr(OutStr, 2, Length(Outstr) - 1);
End If;
End While;
Return OutStr;
END
Birgitta
-
 Zitat von B.Hauser
Hallo,
leider gibt es in SQL erst ab Release V5R3M0 eine Funktion REPLACE, die es ermöglicht Zeichen aus einem String zu entfernen.
PHP-Code:
D MyText S 50A inz('ABC XYZ 1234 567890 A') *---------------------------------------------------------- C/EXEC SQL C+ Set :MyText = Replace(:MyText, ' ', '') C/End-Exec C MyText Dsply C Eval *INLR = *On
Wenn Du diese Funktionalität vor Release V5R3M0 unbedingt in SQL braucht, hast Du nur die Möglichkeit Dir eine User Defined Function (UDF) zu stricken.
Dabei kann es sich entweder um eine Funktion z.B. in RPG geschrieben, die als UDF registriert wird, oder die direkt in SQL geschrieben ist.
Die folgende Funktion müsste funktionnieren:
PHP-Code:
Create Function MyLib/RmvCharacter (InString VarChar(100),RepChar VarChar(1)) returns varchar(100) Language SQL BEGIN Declare OutStr varchar(100); Declare StrPos integer; Set OutStr = InString; Set StrPos = -1; While StrPos <> 0 Do Set StrPos = locate(RepChar, OutStr, 1); If StrPos > 1 and StrPos < Length(OutStr) - 1 Then Set OutStr = substr(OutStr, 1, StrPos - 1) concat substr(OutStr, StrPos + 1, Length(OutStr) - StrPos); ElseIf StrPos = Length(Outstr) Then Set OutStr = substr(OutStr, 1, StrPos - 1); ElseIf StrPos = 1 Then Set OutStr = substr(OutStr, 2, Length(Outstr) - 1); End If; End While; Return OutStr; END
Birgitta
Hallo Zusammen,
bis hierher ist mir ja noch alles verständlich. Aber ein PHP-Script auf der AS400 ?? Geht das?
Gruss,
Thilo
-
Hallo,
das geht zwar auch, aber ist hier nicht gemeint, das bezieht sich auf den Server des Forums; bei dem Script handelt es sich um ein SQL Script, das man mit runsqlstmt und Co. abbrummen kann.
mfg
Dieter Bender
 Zitat von schwenth
Hallo Zusammen,
bis hierher ist mir ja noch alles verständlich. Aber ein PHP-Script auf der AS400 ?? Geht das?
Gruss,
Thilo
Similar Threads
-
By mk in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 13-07-12, 08:53
-
By daniel.ludwig in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 21-07-06, 12:41
-
By wuwu in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 18-07-06, 15:31
-
By desti82 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-07-06, 15:25
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks