2012-04-09 5 views
9

Ich möchte die ersten 4 Wörter und die letzten 4 Wörter nach dem bestimmten Schlüsselwort aus der Datenbank finden. Angenommen, das Schlüsselwort lautet "Account", dann möchte ich die ersten 4 Wörter finden, bevor "Account" in einer Zeile erscheint und 4 Wörter nach "Account" in einer Zeile erscheinen.Finden Sie die ersten 4 Wörter und die letzten 4 Wörter aus der Datenbank nach bestimmten Schlüsselwörtern?

Momentan benutze ich diese Abfrage zum Finden der ersten 20 Zeichen und der letzten 20 Zeichen nach einem bestimmten Schlüsselwort.

SELECT 
SUBSTRING(line.WD, LOCATE('%Account%', line.WD) - 20, 20) AS First20Char, 
SUBSTRING(line.WD, LOCATE('%Account%', line.WD)+LENGTH('a'), 20) AS Last20Char 
FROM `line` WHERE line.WD LIKE '%Account%' 
+0

Welchen Fehler erhalten Sie, wenn Sie die Abfrage ausführen? Bitte detailliert angeben !! – NSExpression

Antwort

1

SQL heißt * S * QL aus einem Grund - Sie sind nicht in der Lage sein werden, etwas das erweiterte ohne die Hilfe eines Vermittlers Programmiersprache zu tun --- es sei denn, Sie wollen die Dinge zu schmutzig werden.

Die kurze Antwort ist, dass Sie eine UDF (benutzerdefinierte Funktion) verwenden müssen, um zuerst zu teilen, dann analysieren Sie Ihre begrenzte Zeichenfolge (auf Leerzeichen ''), dann können Sie Ihre -4/+ 4 Logik anwenden.

Hier ist der beste Artikel über das Netz auf SQL-UDFs Ihnen den Einstieg:

http://www.codeproject.com/Articles/7938/SQL-User-Defined-Function-to-Parse-a-Delimited-Str

Viel Glück!

PS - es wird viel einfacher sein, nur Ihre +/- 30 chr zu greifen, dann die Analyse von außen zwar tun =]. Es wird wahrscheinlich auch mehr Systemressourcen sparen.

Verwandte Themen