2012-04-06 9 views
2

Ich möchte zuerst und letzten 20 Zeichen nach dem bestimmten Schlüsselwort aus der Datenbank finden. Angenommen das Schlüsselwort ist "Account", dann möchte ich die ersten 20 Zeichen finden, bevor "Account" in einer Zeile erscheint und 20 Zeichen nach "Account" in einer Zeile erscheinen.Finden Sie die erste und letzte 20 Zeichen nach bestimmten Schlüsselwort aus der Datenbank?

Derzeit bin ich mit dieser Abfrage:

SELECT LEFT(Line1,20), RIGHT(Line,20) FROM minde_candidate_workexp 
    WHERE minde_candidate_workexp.WorkDesc LIKE '%Accounts%' ; 

die ersten 20 Zeichen der Zeile angezeigt wird, in dem Schlüsselwort „Konto“ und letzten 20 Zeichen der Zeile angezeigt.

Antwort

2

Eine Kombination aus und SUBSTRING() sollte den Trick machen.

Etwas Ähnliches (nicht getestet):

SELECT 
    SUBSTRING(m.WorkDesc, 
      GREATEST(LOCATE('Accounts', m.WorkDesc) - 20, 0), -- Force pos >= 0 
      LENGTH('Accounts') + 20) 
FROM minde_candidate_workexp m 
WHERE 
    m.WorkDesc LIKE '%Accounts%' 
: 

Siehe auch diese ähnliche Frage: Extract X number of words surrounding a given search string within a string - es klingt wie Sie etwas Kontext aus einer Beschreibung ziehen wollen, könnte es sinnvoller sein, das zu tun, auf Wort Grenzen als auf einer festen Anzahl von Buchstaben.

1

Die folgende zeigt eine Idee:

SELECT substring(line1, locate('account',line1) - 20, 20), 
     substring(line1, locate('account',line1) + length('account'), 20) 
    FROM ... 

Es wird davon ausgegangen, obwohl, dass es mindestens 20 Zeichen vor ‚Konto‘ sind. Es müsste wahrscheinlich überprüft werden, dass der Wert andernfalls negativ sein könnte, was zu unterschiedlichen Ergebnissen führt (eine negative Position ist ein Offset vom Ende der Zeichenfolge).

+0

Dank Mark Wilkins –

Verwandte Themen