Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen. (https://www.delphipraxis.net/211425-sqlite-will-mit-select-where-fieldxx-%3D-0-werte-nicht-anzeigen.html)

hewy 14. Sep 2022 14:17

Datenbank: SQLite • Version: 3.10.0 • Zugriff über: Delphi -> SQL Query

SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Eigenartiges Problem folgende Abfrage sollte mir doch alle Datensätze der Tabelle geben welche im Feld ‘SourceId_Out’ den Wert 0 haben.
‘SELECT SourceId_Out FROM Tm_TimeDayData WHERE SourceId_Out = 0’ oder auch '.... < 1'.
Allerdings muss ich in meinem Fall ‘SELECT SourceId_Out FROM Tm_TimeDayData WHERE SourceId_Out > 99999999’ eingeben kann auch noch ein paar 99 dazu hängen
Komme aber nicht darauf was ich hier falsch mache.
DB: SQLite Habe das selbe Verhalten in Delphi XE5 mit FireDAC oder mit SQLiteExpert direkt die Abfrage unter 'SQL'.
Die Tabelle Tm_TimeDayData enthällt im Feld ‘SourceId_Out’ unterschiedlichste Werte versuche ich einer dieser Werte, Beispiel 327 nehme dann funktioniert es einwandfrei. Und gibt mir alle Datensätze welche im genannten Feld 327 haben.

Wo könnte das Problem liegen und wie komme ich damit weiter. Nach 999999 zu filter um die Datensätze mit dem Wert 0 im genannten Feld zu bekommen wäre mir eher etwas unsympathisch.

Schon mal vielen Dank für jegliche Hilfe oder Hint.

jaenicke 14. Sep 2022 14:37

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Bist du sicher, dass da 0 in dem Feld steht und nicht ein nicht darstellbarer Wert?

Könntest du vielleicht ein kleines Beispiel anhängen? Du kannst ja die anderen Felder löschen. Ich hatte das Problem noch nicht, wenn ich solche Abfragen bei SQLite gemacht habe.

hewy 14. Sep 2022 15:14

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Danke für dein Hilfe Angebot Sebastian,
Habe noch etwas versucht.
Wenn ich die den Inhalt der Tabelle nach Excel kopiere und dann wieder zurück funktioniert es anschliessend mit den WHERE Feld = 0.
In Excel sieht es auch korrekt aus. Daher gehe ich davon aus dass die Tabelle irgendwie korrupt ist.
Also geht es darum einen Weg zu finden wie ich die 0 in echte 0 umwandeln kann.
Kann Dir gerne eine Tabelle mit reduziertem Inhalt zustelle vielleicht siehst Du da woran es liegt und was zu tun ist ohne die Daten zu verlieren.

hewy 14. Sep 2022 15:34

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Und hier eine DB. es hat zwei Tabelle Tm-SelectTest und Tm_SelectTest_Bak sind beide gleich mit gleichem Inhalt.
Und auch eine View 'SelectTest' diese sollte alle Datensätze auflisten welche im Feld SourceId_Out = 0 haben.
SELECT * FROM Tm_SelectTest WHERE SourceId_Out = 0
Findet aber kein Datensatz obwohl es einige gibt.

jaenicke 14. Sep 2022 17:05

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Also ich weiß nicht, warum das bei dir nicht der Fall ist, aber bei mir zeigt SQLite Expert direkt an, dass da etwas komisch ist:

Anhang 55377

In der Spalte steht, wie man sieht, ein Text statt einer Zahl. Und dieser Text ist natürlich nicht "= 0". Deine Tabelle ist nicht in Ordnung.

Du solltest den Anhang übrigens wieder löschen. Du hast vergessen die gelöschten Tabellen mit "Vacuum" zu bereinigen. Die gelöschten Inhalte, die da noch drin sind, sind glaube ich nicht für die Öffentlichkeit bestimmt.

himitsu 14. Sep 2022 17:17

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich sehe keine 0 in dieser Tabelle, aber ganz viele "irgendwas" :stupid:


[edit]
wo kommt den plötzlich der jaeneke her :shock:

Joar, so eine halbwegs typlose Datenbank hält schnell mal ein paar kleine Problemchen bereit, wenn man überall nahezu alles reinschreiben kann. :duck:

BerndS 14. Sep 2022 17:31

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Mit dem Delphi Tool db Explorer wird aber eine 0 angezeigt. Dazu hab ich mal die DB dort registriert.

himitsu 14. Sep 2022 17:44

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Da SQLite nicht wirklich typsicher ist, kann man da viel Mist bauen.

Bei deiner Abfrage wird das INT wohl auch als Integer behandelt und dann der "ungültige" Wert in eine 0 konvertiert,
scheinbar leider ohne jegliche Fehlermeldung/Warnung. :wall:

Das WHERE wird aber ohne Cast ausgeführt und bekommt halt mit, dass der "Text" keine 0 ist.

hewy 14. Sep 2022 20:06

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Oh Vielen Dank für eure Hilfe.
Hat mich auf den Pfad gebracht.
Habe wohl eine ältere oder uralte Version von SQLite Expert 3.5.93... auf dem Rechner hier. denn hier werden schön 0 angezeigt.
Habe das Problem damit erkennen können. Nun muss ich allerdings eine Lösung finde die bestehenden Datenbanken zu bereinigen und wo 0 angezeigt wird auch 0 eintrage.
Mal sehen wie sich das machen lässt!
Ich schaue mir das morgen an habe schon mal eine Idee.
Interessant ist auch dass Delphi XE5 FireDAC wenn ich das Feld 'SourceId_Out' aus eine anderen Abfrage auslese 0 zurück gibt, wenn ich aber die genannte SQL SELECT Abfrage ausführe keinen Datensatz findet.
Schon mal Danke gebe dann Bescheid wie ich das Problem bei den Kunden beheben konnte.

blawen 14. Sep 2022 21:21

AW: SQLite will mit SELECT ... WHERE fieldxx = 0 Werte nicht anzeigen.
 
Zitat:

Zitat von hewy (Beitrag 1511812)
Interessant ist auch dass Delphi XE5 FireDAC wenn ich das Feld 'SourceId_Out' aus eine anderen Abfrage auslese 0 zurück gibt, wenn ich aber die genannte SQL SELECT Abfrage ausführe keinen Datensatz findet.

Ich setze zwar MySQL ein, aber über dieses Problem bin ich auch schon mehrfach gestolpert (der Inhalt stimmt eigentlich, trotzdem wird nichts gefunden).
Hast Du schon einmal versucht, statt mit dem "=" mit "LIKE" zu arbeiten? K.A. ob SQLLite dies kennt, aber unter MySQL hilft es :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:33 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz