Ungewollte Zeichen am Ende einer Zeile löschen

August 1, 2011 under MySQL, SQL

Heute hatte ich das Problem, dass sich bei manchen Zeilen in der Datenbank ungewollt Zeichen angehängt haben. Ein Konfigurationsfehler in der Oberfläche. Der Quickfix in der Datenbank für die falsch gespeicherten Daten lautet:

UPDATE tabelle SET feld1=TRIM(TRAILING ',0' FROM feld1)
WHERE field1 LIKE '%,0'

Das Where ist in diesem Fall die doppelte Absicherung und zur leichten Performancesteigerung, prinzipiell aber nicht nötig.

comments: 0 »

Wieviele Wörter sind in der Spalte einer MySQL Tabelle?

Juni 17, 2011 under MySQL, SQL

Ich weiss nicht, ob das der beste Weg ist das zu tun, er ist auf jedenfall schnell:

SELECT SUM( LENGTH(columnname) - LENGTH(REPLACE(columnname, ' ', ''))+1)
FROM TABLE
comments: 0 » tags:

MATCH AGAINST

Mai 16, 2011 under IT, MySQL, SQL

Gerade mal wieder eine neue Funktion in MySQL entdeckt, die ich bisher noch nie benutzt hatte.

Szenario: Ich habe eine Datenbank mit mehreren Städtenamen, suche ich nun eine Stadt z.B. Frankfurt, so kann es sein, dasss ich sie entweder nicht finde wenn ich sie mir

town='Frankfurt'

suche, weil die Städte “Frankfurt am Main” und “Frankfurt (Oder)” heißen. Oder ich finde beide (und noch ein paar mehr) wenn ich mit

town LIKE '%Frankfurt%'

suche.

Um hier den festen Treffer zu finden gibt es eine Funktion in MySQL diese heißt MATCH AGAINST und betrifft die Volltext SUche. Hierfür muss ein FULLTEXT Index auf den betreffenden Spalten angelegt werden. Danach kann ich nach Frankfurt mit

SELECT town FROM cities WHERE MATCH (town) AGAINST ('Frankfurt')

suchen. Dies liefert mir Alle Frankfurts, sogar schon richtig sortiert.

comments: 0 »

Table crashed

Mai 14, 2011 under MySQL
Heute kam diese Fehlermeldung:
TABLE './DBNAME/TABLENAME' IS marked AS crashed AND LAST (automatic?) repair failed
Wahrscheinlich waren Indexe kaputt, die Tabelle bei mir ist auch riesig, ca. 10mio Einträge. Lösung:
REPAIR TABLE TABLENAME;
Danach sollte es hoffentlich wieder funktionieren, wenn nicht, dann wird es wohl eher ein Plattenproblem sein.
comments: 0 »