Domanda

Ho un database con 1 colonna che ha campi di testo. Ho bisogno di trovare e montare una nuova colonna con una sottostringa specifica. Il mio inglese non è buono, quindi proverò a spiegare sotto.

Esempio di 1 campo:

.

Lorem Ipsum Dolor Sit Amet, Consectuer Adipiscing Elit, SED diam Nonmmino Nibh Euismod Tincidunt Ut Laareet Dolore Magna Magna Aliquam Erat Volutupat. UT WISI Enim AD Minime Veniam, Quis Nostrud Esercizio UllamCoRPer Suscipit Lobortis Nisl Ut Aliquip EX EA Commodo Conseguet. Duis Autem Vel Eum Iriure Dolor in Hendrerit in Vulconate Velit Esse Molestie conseguet, Vel Illum Dolore Eu Feggiat Nulla Facilisis a XXXX: Yyyyy Vero Eros et accumsan et iusto odio dignissim qui blandit Praesent luptum zzril delitenit aument duis dolore te feugit Nulla Facilisi. NAM Liber TEMPER CUM SOLUTA Nobis Eleifend Opzione CONGUE NIHIL Imperdet Doming ID Quod Mazim Placeerat Facer Posim Assum. Typi non habent claritatem recitam; est usus legentis in IIS QUi Facit Eorum Claritatem. Investigazioni Dimostraverunt Lectores. Leger Me Lius Quod II Legunt Saepius. Claritas Etiam Processus Dynamicus, Qui Sequour Mutationem ConsuetuDium Lectyum. Mirum Est. Notare Quah Littera Gothica, Quam Nunc Putamus Parum Claram, Anteposuerit LitteraRum Formas Humanitatis per Seacula Quarta Decima et quinta decima. EODEM Modo Typi, Qui Nunc Nobis Videntur Firm Clari, Fantics Sollemnes in Futurum.

Ho bisogno di trovare ed estrarre il valore del yyyyy che viene dopo xxxx : e la posizione della variabile all'interno del testo. Finora, ho provato questo:

SELECT 
 SUBSTRING_INDEX(
 RIGHT(description, 
 GREATEST(LOCATE('xxxx :', description),
 LOCATE('xxxx :', description))-1), ' ', -1)
FROM wwwww
.

So che potrebbe essere il modo di risolverlo, ma non riesco a far funzionare correttamente. (Ho già guardato questo: restituisce il testo specifico da MySQL Utilizzo di localizzare e sottostringa )

PS: il "xxxx:" è sempre lo stesso ... il yyyyy ha un valore variabile

È stato utile?

Soluzione

Si prega di provare questo

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(description,'XXXX : ',-1),' ',1) from wwwww
.

Ecco il sqlfiddle

Non certo perché non funziona per te magari prova questa variazione vedere se funziona

SELECT SUBSTRING_INDEX(RIGHT(post_content,LENGTH(post_content) - (LOCATE('XXXX : ',post_content)+6)),' ',1) as var from wp_posts
.

Altri suggerimenti

Per trovare la prima parola (o una stringa) che segue xxxx : (possibilmente con e senza spazi attorno a :) in un blocco di testo utilizzando PHP e Regex:

$subject = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, vel illum dolore eu feugiat nulla facilisis at XXXX : yyyyy vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.";

# Case insensitive match.
$pattern = '/XXXX\s?:\s?(\w+)/i';

# If `XXXX` really has to be all caps, remove the `i` flag, like so:
#$pattern = '/XXXX\s?:\s?(\w+)/';

preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches[1]);

$matched_text = $matches[1][0];
echo $matched_text;

$match_position = $matches[1][1];
echo $match_position;
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top