Verhalten von LIKE "%" bei Postgresql anders als bei MySQL?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Ich habe schon wieder ein seltsames Problem, das ich mir nach einer Stunde Suche immer noch nicht erklären kann.

Ich habe mir eine Suche programmiert. Die entscheidende Zeile sieht so aus (Elixir)

Code: Alles auswählen

Tag.query.filter(Tag.tname.like(tag)).all()
Also "tag" gehen verschiedene Suchbegriffe rein, die immer mit einem % anfangen und enden, zum Beispiel %dip%

Wenn ich als Datenbankserver MySQL finde dann findet er in der Datenbank den Tag "DIP". Postgresql findet ihn nicht. Gebe ich als Suchbegriff zum Beispiel %mega% an

MySQL scheint % als 0 bis beliebig viele Zeichen zu werten, Postgresql dagegen erwartet mindestens 1 Zeichen. Kann das sein? Oder ist das Einstellungssache beim Server? Jedenfalls hab ich hier bei den Servern ein unterschiedliches Verhalten
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
BlackJack

@burli: Schau doch einfach in die Dokumentation(en):

http://dev.mysql.com/doc/refman/5.0/en/ ... tions.html
http://www.postgresql.org/docs/current/ ... ching.html

Ich würde mal eher darauf tippen, dass MySQL die Gross/Kleinschreibung ignoriert und PostgreSQL nicht. Such doch mal nach '%DIP%' statt nach '%dip%'.
burli
User
Beiträge: 1156
Registriert: Dienstag 9. März 2004, 18:22

Hast recht. Auf das Offensichtliche komme ich mal wieder nicht :oops:

Ich lese gerade, dass es "ILIKE" gibt. Damit geht es.

Man sollte einfach mal ne Stunde den Computer ausschalten statt krampfhaft nach dem Fehler zu suche *GRML*

Danke für den Hinweis
Das schwierigste beim Programmieren ist, sinnvolle Variablen- und Funktionsnamen zu finden :lol:
Antworten