Anmelden

View Full Version : Auswahlfehler für Feld *N.



Seiten : [1] 2

dibe
16-04-19, 08:29
Guten Morgen

ein


SELECT * FROM DATEI WHERE F1 = 'W1' and F2 = 'W2' and
F3 = 'W3' and dec(digits(substr(F4, 1, 7)), 7, 0)
not between
1 and 9999999


bringt einen Auswahlfehler für Feld *N (mit und ohne DEC )

Eine Kontrolle a la


SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 1, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')


für alle Stellen in F4, von 1 bis 7, bringt nie einen Satz. Also kein Fehler.

Was ist falsch?
Dietlinde Beck

(der "not between" ist schon der 1. Teil der Fehlersuche, eigendlich verknüpfe ich hier mit einen numerischen Feld einer anderen Datei)

andreaspr@aon.at
16-04-19, 09:43
In deinem Kontroll-Select prüfst du nur die erste Stelle ... substr(F4, 1, 1)
Im obrigen holst du dir jedoch 7 Characters. Und da wird es wohl irgendwo ungültige numerische Zeichen enthalten.

lg Andreas

dibe
16-04-19, 10:17
Nein


für alle Stellen in F4, von 1 bis 7, bringt nie einen Satz. Also kein Fehler.

das hast du wohl überlesen!

andreaspr@aon.at
16-04-19, 11:00
Dein Select mit dem Fehler:
and substr(F4, 1, 7)

Dein Kontroll-Select:
and substr(F4, 1, 1)

Das sind 2 unterschiedliche substrings

dibe
16-04-19, 11:07
ok, dann so: (formatiert als Zitat, da sonst immer verschoben)


SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 1, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
kein Satz. Also kein Fehler.

SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 2, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
kein Satz. Also kein Fehler.


SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 3, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
kein Satz. Also kein Fehler.


SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 4, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
kein Satz. Also kein Fehler.



SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 5, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
kein Satz. Also kein Fehler.




SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 6, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
kein Satz. Also kein Fehler.


SELECT * FROM DATEI WHERE F1 = 'W1' ...
... and substr(F4, 7, 1) not
in('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
kein Satz. Also kein Fehler.

xenofob
16-04-19, 11:21
Wenn nur geprüft werden soll ob es ein nicht numerischen Inhalt gibt:

SELECT * FROM DATEI WHERE F1 = 'W1' and F2 = 'W2' and
F3 = 'W3' and LCASE(substr(F4, 1, 7))<>UCASE(substr(F4, 1, 7))

Bei numerischen Werten gibts kein Unterschied in Lower oder Upper Case.

Pikachu
16-04-19, 11:21
Was zeigt dieser SELECT ?


SELECT digits(substr(F4, 1, 7)) FROM DATEI
WHERE F1 = 'W1' and F2 = 'W2' and F3 = 'W3' and
substr(F4, 1, 1) in ('0','1','2','3','4','5','6','7','8','9')

TheDevil
16-04-19, 11:23
Hallo.

statt :
SELECT * FROM DATEI WHERE F1 = 'W1' and F2 = 'W2' and
F3 = 'W3' and dec(digits(substr(F4, 1, 7)), 7, 0)
not between
1 and 9999999

vielleicht so (ohne digits ...)
SELECT * FROM DATEI WHERE F1 = 'W1' and F2 = 'W2' and
F3 = 'W3' and dec(substr(F4, 1, 7), 7, 0)
not between
1 and 9999999

Gruß,
Ralf

dibe
16-04-19, 11:37
Hallo Ralf.

ohne DIGITS geht es. DANKE

Ich hatte es in der 1. Version ohne DEC

Ich dachte immer DIGITS macht ein alpa Feld numerisch,
DEC auch aber DEC kann Komma interpretieren.

Warum ist hier DEC Fehlerfrei und DIGITS mit Fehler?

dibe
16-04-19, 11:58
Wenn nur geprüft werden soll ob es ein nicht numerischen Inhalt gibt:
Code:
SELECT * FROM DATEI WHERE F1 = 'W1' and F2 = 'W2' and
F3 = 'W3' and LCASE(substr(F4, 1, 7))<>UCASE(substr(F4, 1, 7))
Bei numerischen Werten gibts kein Unterschied in Lower oder Upper Case.[/Code]


keine so gute Idee, was ist mit Blank , ; : .!"§$%&/()=?`´ die haben alle kein Upper/Lower

Oder?