Homepage selbermachen 7.845 Themen, 35.559 Beiträge

Alle kommas aus mysql tabelle entfernen

hansapark / 7 Antworten / Baumansicht Nickles

hallo.

wie kann ich aus einer großen mysql tabelle alle kommas automatisch entfernen?

gibts da einen befehl?

per hand währe es zuviel arbeit.

vielen dank schon mal

bei Antwort benachrichtigen
Borlander hansapark „Alle kommas aus mysql tabelle entfernen“
Optionen

Ist mit REPLACE(str,from_str,to_str), siehe z.B. http://dev.mysql.com/doc/refman/5.1/de/string-functions.html möglich...

Gruß
Borlander

bei Antwort benachrichtigen
hansapark Nachtrag zu: „Alle kommas aus mysql tabelle entfernen“
Optionen

super danke.
habe aber festgestellt dass mein problem auch einfach so zu lösen war:

LIKE (%wort,%)

schön betriebsblind gewesen.
naja replace gut zu wissen

mfg

bei Antwort benachrichtigen
Borlander hansapark „super danke. habe aber festgestellt dass mein problem auch einfach so zu lösen...“
Optionen
LIKE (%wort,%)
Dir ist hoffentlich klar, daß diese Operation extrem teuer ist. Führt zu einem FullTableScan. Falls es um eine Suchfunktion geht solltest Du unbedingt mal die Nutzung von FULLTEXT Indices prüfen...

Gruß
Borlander
bei Antwort benachrichtigen
hansapark Nachtrag zu: „Alle kommas aus mysql tabelle entfernen“
Optionen

hallo..

nein war mir nicht klar, habe erst vor 1 woche mit mysql angefangen..

es ist halt ein SELECT * FROM bilder WHERE jahr LIKE 1998 etc..

wo bilder mit bestimmten eigenschaften aus einem verzeichnis geladen werden.

die tabelle hat ca. 900 zeilen, also ich denke mal noch recht wenig.
ist es nicht egal ob eine tabelle oder ein index (ist doch die gleiche menge an text) gescannt wird? dann könnt ich doch SELECT spalte FROM machen um fulltablescan zu umgehen, oder nicht?

das mit den indexes ist mir im moment noch zu hoch.
wie teuer? für die performance oder finanziell?

die mysql doku ist schwer verständlich wenn man so gar keine ahnung hat was da passiert.
aber danke für den hinweis

bei Antwort benachrichtigen
Borlander hansapark „hallo.. nein war mir nicht klar, habe erst vor 1 woche mit mysql angefangen.. es...“
Optionen
SELECT * FROM bilder WHERE jahr LIKE 1998
In diesem Fall = verwenden.

Interessant ist hier ggf. auch noch BETWEEN und IN().

LIKE ist nur für die Suche mit Platzhaltern sinnvoll. Platzhalter als Präfix sind zu vermeiden weil vorhandene Indices in diesem Fall nicht genutzt werden können...

ist es nicht egal ob eine tabelle oder ein index (ist doch die gleiche menge an text) gescannt wird?
Nein! Ein Index enthält nur Verweise auf die Datensätze. Die Verweise werden dann anhand des Sortierkriterium z.B. in einer Baumstruktur gespeichert und erlauben so einen deutlich schnelles Anspringen von bestimmten Datensätzen.
Beispiel: Personendatenbank mit 1 Mio Einträgen. Wenn man dort ohne Index einen Herrn "Hansa Park" sucht, dann muss man dazu jeden Datensatz einmal prüfen. Mit einem gemeinsamen Index für Vor- und Nachnamen reichen dagegen schon 10 (nur zur Verdeutlichung der Größenordnung, die genaue Anzahl ist abhängig von der konkreten Implementierung) Vergleichsoperationen um die gesuchte Person zu finden. Im Idealfall passt der Index auch noch komplett in den DB-Cache und dann reicht ein Plattenzugriff um den gesuchten Datensatz zu lesen.

wie teuer? für die performance oder finanziell?
Beides. Wenn man Leistung verschenkt geht es ab einer gewissen Größenordnung auch ins Geld ;-)


Gruß
Borlander
bei Antwort benachrichtigen
hansapark Nachtrag zu: „Alle kommas aus mysql tabelle entfernen“
Optionen

hi..

sind platzhalter sowas: wort/ wo_t

bzw. %wort%

?
(die verwende ich auch)

mit den indexes das stelle ich mir nun so oder so ähnlich vor:

A - alex
- anna
- adelbert
B - bertram
- beate
- usw.


richtig?

präfix bedeutet quasi so in der art verwenden mit LIKE oder = oder BETWEEN ?

na dann muss ich wohl mal indices lernen.
(gemieteter webspace/festpreis, kleine seite, aber man kann ja trptzdem versuchen es besser zu machen)

danke sehr

bei Antwort benachrichtigen
Borlander hansapark „hi.. sind platzhalter sowas: wort/ wo_t bzw. wort ? die verwende ich auch mit...“
Optionen
sind platzhalter sowas: wort/ wo_t bzw. %wort%
Ja.
Wobei ich nicht weiß ob MySQL auch bei sowas wie "_Ausdruck" vielleicht vorhandene Indices nutzt. Das würde allerdings auch erst bei größeren Tabellen interessant.
? ist übrigens kein von LIKE ausgewerteter Platzhalter.

Deine Vorstellung von Indices geht in die richtige Richtung. Normalerweise ist der Baum allerdings tiefer (abhängig von der Index-Länge): z.B. B-E-tram und B-E-ate

Zum Thema Präfix siehe
http://de.wikipedia.org/wiki/Wort_(Theoretische_Informatik)#Pr.C3.A4fix
Einfach gesagt: Als Präfix bezeichnet man Zeichenketten die am Anfang eines Worts beginnen


Gruß
Borlander
bei Antwort benachrichtigen