Probleme mit logischen Feldern via Odbc

Habe ein Problem mit logischen Felder unter Alaska Xbase++ und der Odbc-Schnitstelle

Die Datenbank:
CREATE TABLE test.test
( name1 character varying(30),
aktiv boolean,
istaktiv bit(1),
kz character(1) )

Bei einem “Select * from test.test;” werden die Felder “Aktiv” und “IstAktiv” als Character-Felder zurückgegeben.
PostgreSql 9.0. Odbc-Driver {PostgreSQL ODBC Driver(Ansi)} 8.04.02 (mit dem UNICODE-Driver kommt selbes Ergebnis)

Xbase 1.9.331

Dasselbe auf einer MySql-DB (5.1) liefert logisches Feld bei “IstAktiv”, numerischen Wert bei “Aktiv”

Eine boolean spalte sollte auch als boolean zurückkommen. Zumindest unter Java/JDBC passiert das auch so.

Kann es sein, dass Du die Spalte einfach falsch ausliest?
Ich kenne ODBC nicht, aber bei JDBC gibt es eine getBool() Methode, die liefert dann auch einen entsprechenden boolean Wert zurück.

Warum machst Du eine als bit und die andere als boolean, wenn Du offensichtlich beide als boolean willst?

Dasselbe auf einer MySql-DB (5.1) liefert logisches Feld bei “IstAktiv”, numerischen Wert bei “Aktiv”

Ein numerischer Wert bei einer boolean Spalte?
Wieso das denn. Da sollte doch nur true/false zurückkommen :confused:

MySQL kann kein Boolean? :wink:

Warum machst Du eine als bit und die andere als boolean, wenn Du offensichtlich beide als boolean willst?

Es ist ein Test auf verschiedenen Sql-Plattformen. Eigentlich sollte überall das gleiche Ergebnis kommen, so die Theorie. In der Praxis sieht es leider etwas anders aus.

MySql macht bei der Definition von “boolean” ein Tinyint(1), zwangsläufig kommt dann halt ein numerischer Wert zurück.

Wenn die Odbc-Schnittstelle benutzt wird, bekommt man das Ergebnis als Dataset zurück, in etwa so wie eine 2-Dim-Tabelle und man muss sich überraschen lassen, was die einzelnen Konverter mit den Datentypen so machen.

Angeblich soll es ja auch einen SQL-Standard geben :p
Das Problem ist, dass sich niemand daran hält und jeder so sein eigenes Süppchen kocht

Der Standard wird aus dem geschrieben, was bereits am Markt vorhanden ist. Von daher sind neue Features immer mal etwas anders implementiert.

Oder komplett anders, wenn man eine Datenbank nimmt, die sich an keine Standards hält.