Freigeisterhaus Foren-Übersicht
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   NutzungsbedingungenNutzungsbedingungen   BenutzergruppenBenutzergruppen   LinksLinks   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Buddha und SQL

 
Neues Thema eröffnen   Neue Antwort erstellen   Drucker freundliche Ansicht    Freigeisterhaus Foren-Übersicht -> Sonstiges und Groteskes
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
pyrrhon
registrierter User



Anmeldungsdatum: 22.05.2004
Beiträge: 8770

Beitrag(#530810) Verfasst am: 27.07.2006, 21:18    Titel: Buddha und SQL Antworten mit Zitat

In SQL werden NULL-Werte lustig behandelt: nehmen wir eine Spalte vom Typ Integer an und lassen wir weiters eine Query laufen (WHERE columnname <> 1). Wir sehen, dass keine Zeile ausgegeben wird, die in dieser Spalte den Wert NULL hat.

Ich verstehe, dass NULL nicht gleich 1 ist, aber NULL ist in SQL ebenso wenig nicht gleich 1. Das erinnert mich an Buddha, der gefragt wurde, ob es wahr sei, dass wir eine ewige Seele hätten, und mit "Nein" antwortete. Dann wurde er gefragt, ob es dann falsch sei, dass wir eine ewige Seele hätten, und Buddha antwortete ebenfalls mit "Nein".

Da ist also dieser zustandlose Zustand des Nicht-Dualismus, der NULL ist und leer bezüglich aller dualistischen Fragen, der nicht dieses und nicht jenes, weder das Nicht-Sein von diesem noch das Nicht-Sein von jenem ist. Ich beginne zu begreifen, was Buddha sagte, und zwar mit Hilfe des Microsoft SQL Servers.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sokrateer
souverän



Anmeldungsdatum: 05.09.2003
Beiträge: 11649
Wohnort: Wien

Beitrag(#530831) Verfasst am: 27.07.2006, 21:42    Titel: Antworten mit Zitat

Nein, denn die Semantik von "<>" betrifft nur Zahlen, genauso wie "=". NULL ist keine Zahl.

Ist ungefähr so, wie wenn du fragst. Welches von den folgenden Dingen ist kleiner als ein Haus: "Hase, Stuhl, Blume, Grün, Eiche, Jumbo-Jet"
Ergebnis: "Hase, Stuhl, Blume"
Ergebnis der Frage nach größeren Dingen: "Eiche, Jumbo-Jet"
"Grün" kommt in keiner Antwortmenge vor.

Die Frage nach "<>" ist nicht die logische Negation von "=", genauso wie "größer" nicht die Negation von "kleiner" ist.

In der echten Negation müsste "NULL" dabei sein, genauso wie sich Buddha entscheiden müsste. So widerspricht er sich einfach.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nergal
dauerhaft gesperrt



Anmeldungsdatum: 17.07.2003
Beiträge: 11433

Beitrag(#530870) Verfasst am: 27.07.2006, 22:41    Titel: Antworten mit Zitat

Und was lernen wir daraus?

-Buddha hat nicht mit SQL gearbeitet!
-Er spricht ständig Variablen an die er nicht deffiniert hat (Nirvana)!
-Nicht alles unverständliche aus Indien ist Softwarecode.
-Der Browser wechselt bereits auf Dalai Lama 14.0 und noch immer wird das Gott-Tag falsch interpretiert.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
CoS
Antitheist



Anmeldungsdatum: 10.07.2005
Beiträge: 2734

Beitrag(#530948) Verfasst am: 28.07.2006, 01:56    Titel: Antworten mit Zitat

WHERE columnname <> 1 = wo die Spalte größer UND kleiner 1 ist = unmöglich. Keine Zahl ist größer und kleiner 1 zwinkern

Deine Abfrage könnte aber auch so aussehen:
WHERE spalte kleiner 1 oder spalte größer 1
(wenn ichs als SQL Syntax schreibe spinnt die Forensoftware Geschockt )

Ich würde so abfragen:
WHERE columnname != 1
Dann kriegst Du alle Werte die nicht 1 sind...

oder wenn Du nur die "Null" Werte willst
WHERE columnname = ''

bzw.
WHERE columnname = NULL

Also nix Buddah zwinkern
_________________
"Wenn Sie mich suchen, ich halte mich in der Nähe des Wahnsinns auf, genauer gesagt auf der schmalen Linie zwischen Wahnsinn und Panik, gleich um die Ecke von Todesangst, nicht weit weg von Irrwitz und Idiotie!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
CoS
Antitheist



Anmeldungsdatum: 10.07.2005
Beiträge: 2734

Beitrag(#530956) Verfasst am: 28.07.2006, 02:18    Titel: Antworten mit Zitat

Ahh hab mich geirrt - Stimmt - <> nachfolgende Bedingungszeichen sind ja immer "oder"...

Kann das vielleicht sein weil "NULL" nicht gleich 0 ist?

P.S.: Ja das isses - 0 und NULL sind verschieden. Hat eine Zahl direkt den Wert 0 wird er bei der Abfrage mit ausgegeben!

Bei Programmiersprachen ist 0 und "FALSE" das gleiche - Das irritiert natürlich...
_________________
"Wenn Sie mich suchen, ich halte mich in der Nähe des Wahnsinns auf, genauer gesagt auf der schmalen Linie zwischen Wahnsinn und Panik, gleich um die Ecke von Todesangst, nicht weit weg von Irrwitz und Idiotie!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Heike J
registrierter User



Anmeldungsdatum: 16.07.2003
Beiträge: 26284

Beitrag(#530977) Verfasst am: 28.07.2006, 08:22    Titel: Antworten mit Zitat

CoS hat folgendes geschrieben:
Ahh hab mich geirrt - Stimmt - <> nachfolgende Bedingungszeichen sind ja immer "oder"...


Anders wäre schlecht...

Zitat:
Kann das vielleicht sein weil "NULL" nicht gleich 0 ist?

P.S.: Ja das isses - 0 und NULL sind verschieden. Hat eine Zahl direkt den Wert 0 wird er bei der Abfrage mit ausgegeben!

Bei Programmiersprachen ist 0 und "FALSE" das gleiche - Das irritiert natürlich...


IST NULL (das Gegenteil von IST NICHT NULL) entspricht einem leeren Feld. Hat nix mit 0 zu tun.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
tati
auf Wunsch deaktiviert



Anmeldungsdatum: 16.03.2005
Beiträge: 567

Beitrag(#530987) Verfasst am: 28.07.2006, 08:57    Titel: Re: Buddha und SQL Antworten mit Zitat

Nergal hat folgendes geschrieben:
Und was lernen wir daraus?

-Buddha hat nicht mit SQL gearbeitet!
-Er spricht ständig Variablen an die er nicht deffiniert hat (Nirvana)!
-Nicht alles unverständliche aus Indien ist Softwarecode.
-Der Browser wechselt bereits auf Dalai Lama 14.0 und noch immer wird das Gott-Tag falsch interpretiert.


Da NULL einen undefinierten Zustand darstellt, versagen logischerweise alle Vergleichsoperatoren. Um NULL-Werte abzufragen ist deshalb explizit die Klausel WHERE ATTRIB IS [NOT] NULL zu verwenden.

Gruss
Tati


Zuletzt bearbeitet von tati am 28.07.2006, 11:08, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Galaxisherrschers Katze
Verwöhntes Haustier



Anmeldungsdatum: 06.04.2005
Beiträge: 5018

Beitrag(#531089) Verfasst am: 28.07.2006, 11:02    Titel: Antworten mit Zitat

CoS hat folgendes geschrieben:
Ahh hab mich geirrt - Stimmt - <> nachfolgende Bedingungszeichen sind ja immer "oder"...

Wobei in BASIC ja <> generell für Ungleichheit verwendet wird, unabhängig davon, ob die größer/kleiner-Relation tatsächlich darauf anwenden lässt... Vielleicht hat das ja zu Verwirrung geführt.
_________________
"(...)steak can be attached to a baby to attract lions(...)" (Aus der ESRB-Beschreibung von Scribblenauts)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Shadaik
evolviert



Anmeldungsdatum: 17.07.2003
Beiträge: 26377
Wohnort: MG

Beitrag(#531100) Verfasst am: 28.07.2006, 11:32    Titel: Antworten mit Zitat

Galaxisherrschers Katze hat folgendes geschrieben:
CoS hat folgendes geschrieben:
Ahh hab mich geirrt - Stimmt - <> nachfolgende Bedingungszeichen sind ja immer "oder"...

Wobei in BASIC ja <> generell für Ungleichheit verwendet wird, unabhängig davon, ob die größer/kleiner-Relation tatsächlich darauf anwenden lässt... Vielleicht hat das ja zu Verwirrung geführt.
Mich wundert, warum das solche Verwirrung stiftet, beim Symbol größergleich sagt auch niemand, dass es keine Zahl geben kann, die zB größergleich 1 ist - entweder ist eine Zah 1, größer als eins oder kleiner.
_________________
Fische schwimmen nur in zwei Situationen mit dem Strom: Auf der Flucht und im Tode
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
CoS
Antitheist



Anmeldungsdatum: 10.07.2005
Beiträge: 2734

Beitrag(#531346) Verfasst am: 28.07.2006, 16:24    Titel: Antworten mit Zitat

Heike Jackler hat folgendes geschrieben:
CoS hat folgendes geschrieben:
Ahh hab mich geirrt - Stimmt - <> nachfolgende Bedingungszeichen sind ja immer "oder"...


Anders wäre schlecht...

Zitat:
Kann das vielleicht sein weil "NULL" nicht gleich 0 ist?

P.S.: Ja das isses - 0 und NULL sind verschieden. Hat eine Zahl direkt den Wert 0 wird er bei der Abfrage mit ausgegeben!

Bei Programmiersprachen ist 0 und "FALSE" das gleiche - Das irritiert natürlich...


IST NULL (das Gegenteil von IST NICHT NULL) entspricht einem leeren Feld. Hat nix mit 0 zu tun.

Richtig, nur ist es bei Programmiersprachen anders

Weise ich beispielsweise im PHP einer Variable den Wert 0 zu und frage dann ob die Variable leer ist, wird mir mit true (also wahr) geantwortet - Also 0 und leer ist für PHP das gleiche...Um 0 in PHP direkt abzufragen muss man so fragen:
Code:
$test = 0;
if($test===0) {
echo "test war 0";
}

gibt "test war 0" aus!

Aber eben auch:
Code:
$test = 0;
if(!$test) {
echo "test war leer";
}

gibt "test war leer" aus, obwohl test einen wert enthielt...
_________________
"Wenn Sie mich suchen, ich halte mich in der Nähe des Wahnsinns auf, genauer gesagt auf der schmalen Linie zwischen Wahnsinn und Panik, gleich um die Ecke von Todesangst, nicht weit weg von Irrwitz und Idiotie!"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Nergal
dauerhaft gesperrt



Anmeldungsdatum: 17.07.2003
Beiträge: 11433

Beitrag(#531976) Verfasst am: 29.07.2006, 13:44    Titel: Antworten mit Zitat

Zitat:
Da NULL einen undefinierten Zustand darstellt, versagen logischerweise alle Vergleichsoperatoren. Um NULL-Werte abzufragen ist deshalb explizit die Klausel WHERE ATTRIB IS [NOT] NULL zu verwenden.

Gruss
Tati


Dann soll die Var als String deffiniert werden, hat ja keiner was von Rechnen gesagt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Rene Hartmann
Säkular? Na klar!



Anmeldungsdatum: 17.07.2003
Beiträge: 1404
Wohnort: Rhein-Main

Beitrag(#531995) Verfasst am: 29.07.2006, 14:01    Titel: Re: Buddha und SQL Antworten mit Zitat

viator hat folgendes geschrieben:
In SQL werden NULL-Werte lustig behandelt: nehmen wir eine Spalte vom Typ Integer an und lassen wir weiters eine Query laufen (WHERE columnname <> 1). Wir sehen, dass keine Zeile ausgegeben wird, die in dieser Spalte den Wert NULL hat.

Ich verstehe, dass NULL nicht gleich 1 ist, aber NULL ist in SQL ebenso wenig nicht gleich 1. Das erinnert mich an Buddha, der gefragt wurde, ob es wahr sei, dass wir eine ewige Seele hätten, und mit "Nein" antwortete. Dann wurde er gefragt, ob es dann falsch sei, dass wir eine ewige Seele hätten, und Buddha antwortete ebenfalls mit "Nein".


Buddha kannte offensichtlich die dreiwertige Logik nicht.

Eine funktionierende Logik mit NULL erfordert einen dritten Wahrheitswert "Vielleicht" für Vergleiche mit NULL. Aber ganz agesehen davon, ob das eine gute Idee ist, ist das NULL-Handling in SQL reichlich inkonsistent.
_________________
"Es kommt darauf an, zur Gruppe der Individualisten zu gehören"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sokrateer
souverän



Anmeldungsdatum: 05.09.2003
Beiträge: 11649
Wohnort: Wien

Beitrag(#532213) Verfasst am: 29.07.2006, 18:47    Titel: Re: Buddha und SQL Antworten mit Zitat

Rene Hartmann hat folgendes geschrieben:
Buddha kannte offensichtlich die dreiwertige Logik nicht.

Eine funktionierende Logik mit NULL erfordert einen dritten Wahrheitswert "Vielleicht" für Vergleiche mit NULL. Aber ganz agesehen davon, ob das eine gute Idee ist, ist das NULL-Handling in SQL reichlich inkonsistent.

Nein, da braucht man überhaupt keinen dritten Wahrheitswert. Abgesehen davon kann man jede mehrwertige Logik in einer zweiwertigen darstellen.

Schreiben wir es in der Prädikatenlogik an:
Das Gegenteil von "größer(X,NULL)" ist nicht "kleinergleich(X,NULL), sondern vielmehr "¬größer(X, NULL)"

Die Negation "¬" dreht immer den Wahrheitswert um. "größer" und "kleinergleich" sind beides unabhängige Prädikate.

Nehmen wir vielleicht ein weniger verwirrendes Beispiel her und zwar mit den Prädikaten "männlich" und "weiblich".

Folgt aus "¬männlich(X) => weiblich(X)". Nein, denn man kann leicht Gegenbeispiele bringen. Ein Schuh ist nicht männlich. Die Aussage "männlich(Schuh)" ist falsch. Die Negation "¬männlich(Schuh)" ist wahr. Ist der Schuh deshalb weiblich? Nein!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen   Drucker freundliche Ansicht    Freigeisterhaus Foren-Übersicht -> Sonstiges und Groteskes Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.



Impressum & Datenschutz


Powered by phpBB © 2001, 2005 phpBB Group