Frage

Ich habe eine Datenbank mit 1 Spalte, die Textfelder enthält.Ich muss eine neue Spalte mit einer bestimmten Teilzeichenfolge finden und bereitstellen.Mein Englisch ist nicht gut, daher versuche ich es weiter unten zu erklären.

Beispiel für 1 Feld:

Lorem Ipsum Dolor Sit Amet, Abschnitt adipiscing Elit, SED -Diam Nicht -Nibh Euismod Tincidunt Ut Laoreet Dolore Magna Aliquam Erat Volutpat.Ut wisi enim ad minimal veniam, quis nostrud traination ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo Folg.DUIS AUTEM VEL EUM IRIURE DOLOR IN HENDRERIT IN VULPUTATE VELIT ESSE MULESTIE Konsequenz XXXX:jjjjj Vero Eros et accumsan et iosto odio Dignissim qui Blandit Praesent luptatum Zzril Delenit Augue duis Dolore te Feugait Nulla Facilisi.Nam liber liber tempor cum Soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim Annahme.Typi non havent claritatem insitam;est usus legentis in iis qui facit eorum claritatem.Investigationes Demonstraverunt Lectores Legere ME Lius Quod II Legunt Saepius.Claritas est etiam processus dynamicus, qui sequitur mutationem consruetudium lectorum.Mirum Est Notare Quam Littera Gothica, Quam nunc putamus parum claram, Anneposuerit Litterarum Formen Humanitatis pro Sea Quarta Decima et quinta Decima.Eodem modo typi, qui nunc nobis videntur parum clari, Fiant Sollemnes in Futurum.

Ich muss den Wert finden und extrahieren yyyyy das kommt danach xxxx :, und die Position der Variablen innerhalb des Textes.Bisher habe ich Folgendes versucht:

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

Ich weiß, dass das vielleicht der Weg ist, das Problem zu lösen, aber ich schaffe es nicht, dass es richtig funktioniert.(Das habe ich mir schon angeschaut: Geben Sie mit LOCATE und SUBSTRING bestimmten Text von MySQL zurück)

PS:Das „XXXX:“ ist immer das Gleiche...Das JJJJ hat einen variablen Wert

War es hilfreich?

Lösung

Bitte versuchen Sie es

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

hier ist die sqlFiddle

Ich bin mir nicht sicher, warum es bei Ihnen nicht funktioniert. Probieren Sie vielleicht diese Variante aus und sehen Sie, ob sie funktioniert

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

Andere Tipps

Um das erste Wort (oder eine Zeichenfolge) zu finden, das folgt xxxx : (evtl. mit und ohne Leerzeichen drumherum :) in einem Textblock mit PHP und 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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top