Diskussion:Einführung in SQL: WHERE-Klausel im Detail
Beispiel funktioniert nicht
BearbeitenMit 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 ~~~~)
@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)
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)
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)
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)
Frage zu WHERE-Klausel
BearbeitenHi, 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)
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)