Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Oracle/SQL: einfache Where-Bedingung funzt nicht

Empfohlene Antworten

Veröffentlicht

Moin Ihr!

Ich habe eine Tabelle, aus der ich alle Datensätze auslesen möchte, deren Datum (in einem Feld gespeichert) zwischen zwei Zeitpunkten liegt und außerdem eine 0 im Feld "gesperrt" und keine 0 und kein O im Feld "Telnr" stehen hat... - soweit so gut - bis auf die letzten beiden Bedingungen geht's auch - aber die Ungleich-Bedingungen im Feld Telnr mag er nicht :( - genausowenig geht es, wenn ich in dem Feld "gesperrt" nach ungleich 1 abfragen würde... - er findet keine Datensätze, obwohl definitiv welche mit den Kriterien vorhanden sind...

Hier mal meine Query - vielleicht hab ich ja auch nur nen blöden Fehler drin...


SELECT BBNR,WVDATUM FROM STAMMDATEN

WHERE ((WVDATUM <= (SYSDATE + 0.01)) 

  AND (WVDATUM >= (SYSDATE - 0.01)) 

  AND (GESPERRT = 0) 

[color=red]  AND (TELNR <> 'O') 

  AND (TELNR <> '0')[/color])

ORDER BY WVDATUM

Die problematischen Bedingungen hab ich mal rot markiert...

Bin für jeden Tip dankbar...

Ich weiß zwar nicht, wie das Feld formatiert ist (ich denke mal als VarChar2), aber probier es einfach mal so!

SELECT BBNR,WVDATUM FROM STAMMDATEN

WHERE ((WVDATUM <= (SYSDATE + 0.01))

AND (WVDATUM >= (SYSDATE - 0.01))

AND (GESPERRT = 0)

AND NOT (TELNR = 'O')

AND NOT (TELNR = '0'))

ORDER BY WVDATUM;

Viel Spaß beim Testen!

CYA

Hi Beety,

Du solltest es nochmal mit dem LIKE Befehl versuchen, bzw. in Deinem Fall mit NOT (TELNR LIKE 'O')

Das funktioniert manchmal besser bei VarChar-Feldern.

Oder Du läßt mal die Hochkommata bei der 0 weg. Dann wandelt er nämlich die 0 die in einigen Feldern steht in NUMBER um und dann hast Du keine Probleme mit eventuellen Leerzeichen oder sowas davor. Bei LIKE sollte das aber auch schon nicht das Problem sein.

Greetz Dooley

  • Autor
Originally posted by DooleyDoo

Hi Beety,

Du solltest es nochmal mit dem LIKE Befehl versuchen, bzw. in Deinem Fall mit NOT (TELNR LIKE 'O')

Das funktioniert manchmal besser bei VarChar-Feldern.

Oder Du läßt mal die Hochkommata bei der 0 weg. Dann wandelt er nämlich die 0 die in einigen Feldern steht in NUMBER um und dann hast Du keine Probleme mit eventuellen Leerzeichen oder sowas davor. Bei LIKE sollte das aber auch schon nicht das Problem sein.

Greetz Dooley

Thx... - aber das hat leider auch nicht geholfen... - ich versteh das langsam nicht mehr... - es kann doch nicht so schwer sein, alle Datensätze auszuschliessen, die ein O oder ne 0 im Feld stehen haben...

  • Autor

Ich hab mein Problem netterweise gelöst bekommen :)

Scheinbar benötigt Oracle erstmal ne Abfrage, ob das Feld "IS NULL" ist... - weiß nicht wieso, aber folgende Query funzt:


SELECT BBNR,WVDATUM FROM STAMMDATEN

WHERE ((WVDATUM <= (SYSDATE + 0.01))

  AND (WVDATUM >= (SYSDATE - 0.01)) 

  AND (GESPERRT = 0) 

  AND ((TELNR is null) 

    OR((TELNR <> ''0'') 

       AND(TELNR <> ''O'')))) 

ORDER BY WVDATUM

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.