mysql: Leerzeichen bei Abfrage in varchar-Feld entfernen

mysql: Leerzeichen bei Abfrage in varchar-Feld entfernen

am 18.09.2004 11:44:49 von Thomas Richter

Hallo,

ich habe in einer Datenbank zwei verschiedene Tabellen, welche mit
folgender Abfrage verknüpft werden:

select a.* from shop_artikel as a,shop_hauptartikel_artikel as b where
a.artikel_nr=b.artikel_id && b.hauptartikel_id='$svHauptartikel'

Das Problem ist nun, dass die Einträge in a.artikel_nr (varchar) des
öfteren mehrere Leerzeichen am Ende eingetragen haben. Somit erfolgt
natürlich keine Ausgabe, obwohl a.artikel_nr mit b.artikel_id
übereinstimmen würden.

Wie kann ich die Leerzeichen bei der Abfrage automatisch entfernen lassen?
Ich habe es schon mit RTRIM() versucht, allerdings ohne Erfolg.

Gruss
Thomas Richter

Re: mysql: Leerzeichen bei Abfrage in varchar-Feld entfernen

am 21.09.2004 12:30:26 von Christian Gerner

Thomas Richter schrieb:

> Wie kann ich die Leerzeichen bei der Abfrage automatisch entfernen
> lassen? Ich habe es schon mit RTRIM() versucht, allerdings ohne Erfolg.

Wie sah die Zeile mit rtrim() aus? Sicher, dass das nur Leerzeichen sind?

Re: mysql: Leerzeichen bei Abfrage in varchar-Feld entfernen

am 21.09.2004 12:58:41 von jpm-account-forwards-to-dev-null-use-reply-adress

Thomas Richter schrieb:

> select a.* from shop_artikel as a,shop_hauptartikel_artikel as b where
> a.artikel_nr=b.artikel_id && b.hauptartikel_id='$svHauptartikel'
>
> Das Problem ist nun, dass die Einträge in a.artikel_nr (varchar) des
> öfteren mehrere Leerzeichen am Ende eingetragen haben.

Warum sind da überhaupt Leerzeichen? Gibt es einen Grund dafür?
Fehler im Backend, Fehler beim Import?

> Wie kann ich die Leerzeichen bei der Abfrage automatisch entfernen lassen?
> Ich habe es schon mit RTRIM() versucht, allerdings ohne Erfolg.

Entferne Sie doch einfach *vorher*.
UPDATE shop_artikel SET artikel_nr = TRIM(artikel_nr)

Natürlich ohne Schießgewähr und Backup nicht vergessen. ;-)


Gruß, JPM

--
SPAMSCHUTZ: Meine E-Mail Adresse ist verschlüsselt.
Wenn Du mir per Mail antworten möchtest, führe bitte
zweimal ROT-13 auf meiner E-Mail Adresse aus.

Re: mysql: Leerzeichen bei Abfrage in varchar-Feld entfernen

am 21.09.2004 20:36:29 von Thomas Richter

Christian Gerner schrieb:
> Wie sah die Zeile mit rtrim() aus? Sicher, dass das nur Leerzeichen sind?

Ich habe festgestellt, dass dies nicht nur Leerzeichen sind sondern auch
ein carriage return (\r) am Ende. Ist mir allerdings erst aufgefallen,
nachdem ich einen Export mit phpmyadmin gemacht habe.

Thomas Richter

Re: mysql: Leerzeichen bei Abfrage in varchar-Feld entfernen

am 22.09.2004 10:32:34 von jpm-account-forwards-to-dev-null-use-reply-adress

Thomas Richter schrieb:

> Christian Gerner schrieb:
>
>> Wie sah die Zeile mit rtrim() aus? Sicher, dass das nur Leerzeichen sind?
>
> Ich habe festgestellt, dass dies nicht nur Leerzeichen sind sondern auch
> ein carriage return (\r) am Ende.

Ich schrieb Dir ja auch schon etwas dazu und hatte Dir bewusst ein
Beispiel mit TRIM geboten. TRIM kann nämlich ggf. beliebige Zeichen
entfernen. Siehe:
http://dev.mysql.com/doc/mysql/en/String_functions.html

Gruß, JPM

--
SPAMSCHUTZ: Meine E-Mail Adresse ist verschlüsselt.
Wenn Du mir per Mail antworten möchtest, führe bitte
zweimal ROT-13 auf meiner E-Mail Adresse aus.