2012-08-04 12 views
8

Ich weiß nicht, welche Funktion dies heißt, aber ich versuche, eine Zeile auszuwählen, die mit den meisten Zeichen für die Ausgabe übereinstimmt/hat. Hier ist was ich versucht habe.mysql - Wählen Sie die meisten Zeichen

select * from table where title like '%alotofcharactershere%' limit 1 

Die oben funktioniert nur für das gesamte Wort: alotofcharactershere

Was will ich wirklich für sie ist es zu brechen: a l o t o f c h a r a h e r e s c t e r und eine Zeile finden, die die meisten passenden Zeichen zu geben hat.

Bitte bitte helfen, wenn Sie wissen, wovon ich spreche. Vielen Dank im Voraus.

Antwort

1

Ich habe herum gegraben und ich bin kein SQL-Experte, aber ich dachte über die Reihenfolge nach Char Länge nach einem Ersatz von Zeichen, die nicht übereinstimmen.

Etwas wie: obwohl SELECT * FROM your_table ORDER BY LENGTH(REGEXP_REPLACE(title, '[^abcdefg]', ''));

2 Probleme. Es passt nicht zu den unterschiedlichsten gefundenen Zeichen. Also wird aaaa von höherem Wert sein als abc. Und ich denke, du meinst, du willst, dass abc von höherem Wert ist. 2. Problem ist wahrscheinlich das größte, mySQL unterstützt diese Regex nicht. Und nicht sicher, dass irgendetwas tut. Aber ich fand diesen Artikel: https://launchpad.net/mysql-udf-regexp

Obwohl ich denke, dass es etwas viel einfacheres und etwas, das eigentlich out of the box funktioniert, kann diese Antwort nur jemandes Geist auslösen denken out of the box.

Es könnte auch eine Lösung mit viel verbindet, aber das ist sehr wahrscheinlich langsamer als alles, was die Auswahl und es in PHP sortieren (oder ähnlich)

+0

Ich meine, wir können immer die ersten paar Zeichen subtrahieren und machen einen rlike, aber ich wollte etwas Neues ausprobieren, deshalb führt es dazu .... – thevoipman

1

Es ist nicht klar, was Sie versuchen wir zu erreichen so fragen, ob Sie haben in Full Text Searches geschaut. Die Möglichkeit, Relevanz zu finden, könnte Ihnen einige Ideen oder Alternativen geben.

Verwandte Themen