php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.03.2007, 16:53  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard Leer- und META Zeichen verhindern korrekte suche !?

Hallo zusammen,

so langsam bin ich echt schon wieder am verzweifeln...

Ich habe eine Tabelle (nicht von mir!) in der oft vor den Daten Leer- bzw. MetaZeichen wie \n vor den eigentlichen Daten kommen.

z.B. im Feld Nachname kommt oft erst ein oder mehrere Leerzeichen bevor der Name (Huber) kommt.

Wenn ich nun so suche "...WHERE Nachname LIKE '%Huber%'..."
wird der Datensatz einfach nicht gefunden !?

Mal abgesehen davon das die Daten vor dem Eintragen getrimmt und vorbereitet werden sollten muss ich jetzt hierfür auch eine Lösung finden.

Habe den MySQL-Befehl TRIM() mal ins Auge gefasst, komm aber nicht wirklich klar damit

Danke schonmal an alle Helferlein!

P.S.: Hoffe der Ausdruck MetaZeichen ist korrekt ? (\n \r \t ,...)
madSoul ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 22.03.2007, 08:42  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

...gibts ja nicht !? hat keiner ne idee ?? *HILFE* !!
__________________
it´s not a bug - it´s a feature...
madSoul ist offline   Mit Zitat antworten
Alt 22.03.2007, 10:01  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

wenn in der DB \nHuber steht und du suchst nach LIKE '%Huber%' müsste er den Huber trotzdem finden.

PHP kennt TRIM auch. Kannst ja beim Eintragen in die DB, die Daten mittels PHP "trimen"
__________________
Wie man Fragen richtig stellt
dsmcg ist offline   Mit Zitat antworten
Alt 22.03.2007, 10:08  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

hi dsmcg,

ich persönlich trimme und formatiere meine daten vor dem eintragen, ist leider eine fremde DB...
Hab es jedoch schon gelöst indem ich alle Daten ausgelesen habe, Leer & Sonderzeichen wurden entfernt und die Datensätze aktualisiert.

Nun klappts auch
__________________
it´s not a bug - it´s a feature...
madSoul ist offline   Mit Zitat antworten
Alt 22.03.2007, 11:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

MySQL's TRIM entfernt nur Leerzeichen, du kannst die Funktion jedoch erweitern:
http://dev.mysql.com/doc/refman/5.0/...functions.html

PHP-Code:
<?php
$aChar 
= array("\r""\n""\t"" ");
do {
  
$iAffectedRows 0;
  for (
$i  0$x count($aChar); $i $x$i++) {
    
mysql_query("UPDATE mytable SET mytext = TRIM(BOTH '$aChar[$i]' mytext)");
    
$iAffectedRows += mysql_affected_rows();
  }
} while (
$iAffectedRows 0);
?>
Das entfernt dir solange Whitespaces wie nötig. Die for-Schleife könntest du noch rausoptimieren in dem du die TRIM's verschachtelst und nur einen Query abschickst. Aber du musst die Funktion ja nur 1x ausführen.
Zergling-new ist offline   Mit Zitat antworten
Alt 22.03.2007, 11:49  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

hi zergling,

vielen dank dafür! muss mich da jetzt noch ein bisschen schlau lesen, ist aber genau was ich gesucht habe (glaub ich)
__________________
it´s not a bug - it´s a feature...
madSoul ist offline   Mit Zitat antworten
Alt 22.03.2007, 13:06  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

was mich aber genau so wie @dsmcg wundert, dass LIKE '%Huber%' kein ergebnis liefert.
bei 'Huber%' könnte das natürlich sein, aber bei '%Huber%' müsste es ohne Rücksicht auf die andere Zeichen ein Ergebnis liefern.
__________________
Slava
http://bituniverse.com
Slava ist offline   Mit Zitat antworten
Alt 22.03.2007, 13:09  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

jo, da weiß ich jetzt auch nicht was ich sagen soll !? soll ich den query posten !?
__________________
it´s not a bug - it´s a feature...
madSoul ist offline   Mit Zitat antworten
Alt 22.03.2007, 13:45  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

mach einfach
select ' Huber ' like '%Huber%'
der ergebnis muss ein 1 sein.
und jetzt
select ' Huber ' like 'Huber%'
der ergebnis ist ein 0
wenn du die andere ergebnise bekommst, dann wird es mich echt wundern
__________________
Slava
http://bituniverse.com
Slava ist offline   Mit Zitat antworten
Alt 22.03.2007, 14:10  
Erfahrener Benutzer
 
Registriert seit: 08.08.2005
Beiträge: 272
madSoul
Standard

inzwischen geht es ja (siehe 3. Beitrag) aber davor habe ich die Anfrage wie im 1. Beitrag gemacht ohne ein Ergebnis zu bekommen. !?
__________________
it´s not a bug - it´s a feature...
madSoul ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche die Notation für dieses Zeichen: # suendesizer HTML, Usability und Barrierefreiheit 2 17.03.2005 11:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sonderzeichen leer, leeres sonderzeichen, php metazeichen, sql metazeichen, metazeichen php, habe korekte meta, metazeichen sql, metazeichen html, metazeichen, php metazeichen leerzeichen, vor \< - zeichen \ leer oder nicht, html sonderzeichen verhindern, metazeichen google, suche metazeichen, google suche metazeichen, html metazeichen, metazeichen \\n, habe eine korekte meta, php sql metazeichen entfernen, php metazeichen suche

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:03 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.