Diskussion:Einführung in SQL: WHERE-Klausel im Detail

Aus Wikibooks
Zur Navigation springen Zur Suche springen

Beispiel funktioniert nicht[Bearbeiten]

Mit der angegebenen Beispieldatenbank funktioniert diese Beispiel weder mit PostgreSQL noch mit MySQL. -- MSC2021 15:07, 21. Jun. 2017 (Signatur nachgetragen von: Jürgen 20:11, 21. Jun. 2017 (CEST)-- bitte signiere deine künftigen Beiträge selbst mit 4 Tilden ~~~~)[Beantworten]

@MSC2021 Auf welches der vielen Beispiele auf dieser Seite beziehst du dich? Üblicherweise gibt es Fehlermeldungen. Die zeigen zwar nicht unbedingt die richtige Position an, geben aber zumindest Hinweise auf das Problem. Bei den "einfachen" Parametern in diesen Beispielen wundern mich zwar Probleme, aber bei den vielen SQL-Dialekten kann ich es nicht ausschließen. Einzelheiten wären deshalb sehr nett. -- Jürgen 20:11, 21. Jun. 2017 (CEST)[Beantworten]

Oh, ich war der Meinung, dass diese Diskussion direkt dem Artikel zugeordnet worden wäre. Sorry dafür. Dieses Beispiel liefert mit der angegebenen Beispieldatenbank mit PostgreSQL und MySQL einen Fehler. select * from Schadensfall where Beschreibung CONTAINS '10%';

PostgreSQL ERROR: syntax error at or near "CONTAINS" LINE 2: where Beschreibung CONTAINS '10%'; ^ ********** Error ********** ERROR: syntax error at or near "CONTAINS" SQL state: 42601 Character: 48

MySQL: Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONTAINS '10% at line 2

MSC2021 08:27, 22. Jun. 2017 (CEST)[Beantworten]

In mysql ist mir noch kein CONTAINS untergekommen. Gleiches gilt für PostgreSQL - aktuelle Versionen kenne ich hier nicht - und MariaDb. Mysql kennt aber REGEXP, was du direkt statt CONTAINS verwenden kannst. Qwertz84 09:04, 22. Jun. 2017 (CEST)[Beantworten]

Diese Hinweise sind zwar schon älter, und ich habe sie im Kapitel nicht berücksichtigt. Ich wiederhole hier nochmals: Jedes DBMS hat seinen eigenen Dialekt; nicht alles, was nach Standard vorgesehen ist, gibt es wirklich immer und überall. -- Jürgen 12:04, 12. Jan. 2021 (CET)[Beantworten]

Frage zu WHERE-Klausel[Bearbeiten]

Hi, gibt es einen Performance-Grund, von IN (Liste) Abstand zu nehmen, und stattdessen eine OR-Verknüpfung zu verwenden? Zum Beispiel für Listen mit nur zwei bekannten Elementen? --62.214.144.50 12:22, 7. Apr. 2022 (CEST)[Beantworten]

Nein, ein solcher Grund ist mir nicht bekannt. Ein DBMS dürfte bei der Umsetzung einer Abfrage den „besten“ Weg im Sinne der Performance finden (und könnte eine Liste mit zwei Elementen selbst in eine OR-Verküpfung übersetzen); Unterschiede im Einzelfall liegen allenfalls im Bereich von Nanosekunden. Bei diesen Beispielen ging es mir nur um die Darstellung des Prinzips. -- Jürgen 15:11, 7. Apr. 2022 (CEST)[Beantworten]