2012-04-09 18 views
9

Voglio trovare le prime 4 parole e le ultime 4 parole dopo la particolare parola chiave dal database. Supponiamo che la parola chiave sia "Account" quindi voglio trovare le prime 4 parole prima che "Account" compaiano in una riga e 4 parole dopo "Account" compaiano in una riga.Trova le prime 4 parole e le ultime 4 parole del database dopo determinate parole chiave?

Attualmente sto usando questa query per trovare i primi 20 caratteri e gli ultimi 20 caratteri dopo una particolare parola chiave.

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

Che errore si ottiene quando si esegue la query? Si prega di specificare in dettaglio !! – NSExpression

risposta

1

SQL si chiama * S * QL per una ragione - non si ha intenzione di essere in grado di fare qualcosa di questo avanzato, senza l'aiuto di un linguaggio di programmazione intermediario --- meno che non si desidera che le cose disordinato.

La risposta breve è che si dovrà utilizzare un'UDF (funzione definita dall'utente) alla prima divisione, quindi analizzare la stringa delimitata (su spazi ' ') allora si può applicare la vostra -4/+ 4 logica.

Ecco il miglior articolo in rete su SQL-UDF per iniziare:

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

Buona fortuna!

PS - sarà molto più semplice afferrare il tuo +/- 30 chr, quindi eseguire il parsing esternamente anche se =]. Probabilmente salverà anche più risorse di sistema.

Problemi correlati