PDA

View Full Version : Fehler im interaktiven SQL



Robi
23-09-15, 11:07
Hi *all

hab gerade einen 'Fehler' im interaktiven SQL festgestellt.
k.a. ob das im embedded auch so ist.

Bsp.:
select f1 from Datei where f1 in(1, 2, 3, 4) --> Anzeige

1
1
2
3
3
3
4

select f1 from Datei where f1 in(1, 2, 3,4) --> Anzeige
1
1
2
4

Keine Fehlermeldung und die falsche Anzeige.
Hat mich eben 2 Stunden gekostet

just for Info, hat mich echt geärgert

Robi

Fuerchau
23-09-15, 11:11
Das ist kein Fehler, das liegt an der Interpretation des Dezimalzeichens.
Die Engländer/Amerikaner haben da keine Probleme mit, da sie einen Dezimalpunkt haben.

Parametertrenner ist nun mal das Komma.
Dezimaltrenner ist bei uns ebenso das Komma.
Um diese explizit zu trennen muss man bei Dezimalkomma als Parametertrenner immer ", " oder " ," kodieren.
Bei "n,m" wird immer eine Dezimalzahl angenommen.

Robi
23-09-15, 11:16
ok, das ist die Erklärung

Ich hatte Fehler ja auch in ' gesetzt.
dachte mir schon so was.

war trotzdem Sau ärgerlich!
Bei mir waren das 7 stellige Mandantennr., die haben nun mal keine Dezimalstellen

Danke
Robi

Fuerchau
23-09-15, 11:24
Leider passiert dies immer mal wieder.
Schlimm ist das bei embedded SQL oder ODBC wo man wie du erst spät merkt was schief läuft.
Bei Funktionen wie SUBSTR wird ja ein Fehler gemeldet, da ja ein Parameter fehlt bzw. nur Ganzzahlen erlaubt sind.

SQL wäre ja "intelligent", wenn beim Syntaxcheck gemerkt würde, dass der Typ der Zahl "3,4" ja nicht zum Vergleichsfeld passt.
Aber durch die immer mehr erweiterten automatischen Cast's halten solche, u.ä., Fehler halt einfach auf.