Re: Leerzeichen in LIKE Bedingung
Albe Laurenz <[email protected]>
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <A737B7A37273E048B164557ADEF4A58B057B1D48@ntex2010a.host.magwien.gv.at> |
Guenther Boelter schrieb: > Nachdem ich nun mehr oder weniger erfolgreich von MySQL zu PostgreSQL > gewechselt bin, habe ich nun das erste Problem, welches mir leichte > Kopfzerbrechen bereitet. > > Ich habe in meiner Datenbank bzw. Tabelle ein Feld vom Typ > character(40), also mit 40 Zeichen Laenge. In diesem Feld stehen > Begriffe wie > > 'Auftraege01' > 'Auftraege02' > 'Auftraege02' etc. .. > > Wenn ich jetzt eine Abfrage in der Art von > > SELECT name FROM formulare WHERE gruppe LIKE 'Auftraege01' ORDER BY name > ASC; > > starte, dann werden keine passenden Datensaetze gefunden. Wenn ich aber > die LIKE-Bedingung mit Leerzeichen auf eine Gesamtlaenge von 40 Zeichen > auffuelle, wie hier zum Beispiel > > SELECT name FROM formulare WHERE gruppe LIKE > 'Auftraege01 ' ORDER BY name ASC; > > dann bekomme ich das gewuenschte Ergebnis. > > Da dies sicherlich nicht Sinn der Sache sein kann, frage ich mich, wo > ich da was falsch verstanden habe. Ein 'Auftraege01%' hilft auch nicht, > weil dann auch 'Auftraege011' mit einbezogen werden wuerde, was nicht > sein soll. PostgreSQL schein BTRIM und RTRIM zu kennen, aber auch das > bringt mir kein anderes Ergebnis. > > Ich vermute mal, die Loesung liegt nicht unbedingt in weiter Ferne, aber > im Moment komme ich nicht drauf. > > Kann mir von Euch jemand helfen? Also ich würde in diesem Fall nicht LIKE, sondern "=" verwenden. Und wenn es LIKE sein muß, würde ein Cast wahrscheinlich am billigsten sein: SELECT name FROM formulare WHERE gruppe::text LIKE 'Auftraege01' ORDER BY name ASC; Liebe Grüße, Laurenz Albe -- Sent via pgsql-de-allgemein mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-de-allgemein