-
Alpha-Zeichen in Artikelnr V6R1
Hallo *all,
ich hatte ja zuletzt hier im Forum die Möglichkeit kennengelernt wie man z.B. nur Sätze mitnumerischen Artikelnr bekommt.
Funktioniert soweit auch ganz gut.
Code:
create view rptrade/xx as
select * from dat015 where (dec(case when artikelnr > '0'
then artikelnr else '0' end, 5, 0) > 0
and
substr(artikelnr, 6, 2) <> '-A')
Wenn ich auf XX ein select mache bekomme ich die gewünschten Daten.
Wenn ich ein Query darauf mache bekomme ich einen Fehler
Nachrichten-ID . . . . : QRY2283 Bewertung . . . . . . : 30 Nachrichtenart . . . . : Diagnose Sendedatum . . . . . . : 08.08.19 Sendezeit . . . . . . : 11:15:56
Nachricht . . . : Auswahlfehler für Feld ARTIKELNR. Ursache . . . . : Die Abfrage wurde nicht ausgeführt, da ein Vergleichsoperand auf Daten aus Feld ARTIKELNR (in Satz 1424 der Datei DAT015 in Bibliothek RPTRADE, die nicht gleich *N sind,) zugreift. Die Daten aus Feld ARTIKELNR sind nicht notwendigerweise falsch, da es sich bei dem Operanden möglicherweise um einen Ausdruck handelt, der neben Feld ARTIKELNR auch andere Felder und Konstanten einbezieht. Ferner ist es möglich, dass ...
Die Daten sehen so aus:
ARTIKELNR
ArtikelNr
59234
59237
59281
59277
59288
59281-A
59277-A
59288-A
59290-A
59292-A
59294-A
58195-A
59295-A
Was muß ich machen damit die Query sauber läuft?
GG 4314 GG
-
Was soll dieser Blödsinn?
(dec(case when artikelnr > '0'
then artikelnr else '0' end, 5, 0)
Dein Problem ist, dass die Dec-Umwandlung immer durchgeführt wird und zwar unabhängig ob der 2. Vergleich dann zieht oder nicht.
Wofür ist die Dec-Konvertierung denn überhaupt gut?
Da reicht doch auch ArtikelNr >= '0'!
-
Was willst Du, nur die Artikel-Nr., die andere Zeichen als Ziffern enthalten?
Da gibt es mehrere Möglichkeiten.
1. Ohne Regular Expressions
Code:
Select FieldX, ....
From ...
Where Trim(Translate(FieldX, ' ', '1234567890')) > ''
2. Mit Regular Expressions - müsste ab Release 7.1 verfügbar sein
Code:
Select FieldX
From ...
Where RegexP_Like(Trim(FieldX), '[^\d]')
Birgitta
-
Für RegEx in SQL sind Zusatzoptionen zu installieren die gerne vergessen werden.
-
Zitat von B.Hauser
Was willst Du, nur die Artikel-Nr., die andere Zeichen als Ziffern enthalten?
Da gibt es mehrere Möglichkeiten.
1. Ohne Regular Expressions
Code:
Select FieldX, ....
From ...
Where Trim(Translate(FieldX, ' ', '1234567890')) > ''
2. Mit Regular Expressions - müsste ab Release 7.1 verfügbar sein
Code:
Select FieldX
From ...
Where RegexP_Like(Trim(FieldX), '[^\d]')
Birgitta
Hallo,
ich will eigentlich nur die Artikel-Nr haben die numerisch sind. Sprich alles andere wie mit -A oder Texte wie Artikel-Nr (kommt vom Import aus Excel) will ich nicht.
-
Dann nimm Birgittas Funktion:
Trim(Translate(FieldX, ' ', '1234567890')) <> ''
Der Translate ersetzt alle Ziffern durch Blanks, der Trim entfernt alle Blanks vor und nachher.
Wenn dann noch was über ist, ist es ungleich Leer.
-
Dann must Du lediglich bei meiner 1. Lösung das Größerzeichen durch ein Gleichheitszeichen ersetzen und schon hast Du die numerischen Artikeln-Nr.
Birgitta
-
Stimmt, da habe ich das doch glatt negiert;-).
-
Danke für die Hilfe,
wobei die Frage warum das SQL anders reagiert als das Query noch nicht beantwortet ist.
vermutlich gibt es dazu auch keine logische Antwort.
-
Das liegt dann an der unterschiedlichen Betrachtung des Optimisers.
Hast du z.B. eine Where-Klausel und es kann ein Index genommen werden, kommt das Ergebnis u.U. an den fehlerhaften Daten nicht vorbei.
Ist ein Tablescan erforderlich oder ein ungünstiger Index, liegen die falschen Daten ggf. mit im Zwischenergebnis.
Nun kommt es auch noch auf dein Release an.
Je nach dem ob V5, V6, V7 arbeitet der Optimizer immer mal wieder anders.
Und da nahm der Query/400 die sog. ClassicalQueryEngine (CQE) und SQL die SQLWQueryEngine (SQE).
Ab irgend einem Release (frag Birgitta) wurde die CQE abgeschafft.
Similar Threads
-
By msost in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 04-03-16, 15:16
-
By KingofKning in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 11-11-15, 10:40
-
By Michael Rude in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 11-06-03, 11:46
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 13-10-01, 12:36
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 02-10-01, 16:16
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