Abfrage SQL korrekt?

(SUBSTRING (MSGLINE FROM 1 FOR 4) = ‚0069‘ AND
NOT (DX_SO_Kennzeichen1_1 = ‚4‘ OR DX_SO_Kennzeichen1_1 = ‚5‘))

– Die MSGLINE ist von STelle 1 bis 4 ‚0069‘
– Das Kennzeichen darf gelichzeitig nicht 4 oder 5 sein,
– dann ist die Bedingung erfüllt

Gibt das dieser Code wieder?

Vielen Dank und Grüße
Fred

Wenn der SQL-Syntax so richtig ist: Ja.

Warum nicht so:

(SUBSTRING (MSGLINE FROM 1 FOR 4) = ‚0069‘ AND
DX_SO_Kennzeichen1_1 NOT IN(‚4‘, ‚5‘)

wenn es vermeidbar ist, sollte man weniger negative Logik usw…:

(SUBSTRING (MSGLINE FROM 1 FOR 4) = ‚0069‘ AND
DX_SO_Kennzeichen1_1 ‚4‘ AND DX_SO_Kennzeichen1_1 ‚5‘))

Gruß Andreas

kleines veto

(SUBSTRING (MSGLINE FROM 1 FOR 4) = ‚0069‘ AND
DX_SO_Kennzeichen1_1 ‚4‘ AND DX_SO_Kennzeichen1_1
‚5‘))

so würden (evtl gültige) Texteingaben fehlschlagen. Aber warum nicht != verwenden?

Du meinst Eingaben mit „Spaces“ ? Dafür kannst Du im Ausdruck
LTRIM / RTRIM / oder TRIM
verwenden um Leerzeichen aus dem Filter auszuklammern, oder welche
Texteingaben erwartest Du noch ? Mit den Wildcards kannst Du
ja bequem nach einem „Muster“ suchen, dafür verwendest Du den
LIKE Operator (z.B. LIKE(’%4%’)).

!! (Nicht nicht)zu verwenden ist eine Angewohnheit.
überliest man nicht so leicht wie !=.

Gruß Andreas

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]