Найдите конкретную подстроку внутри поля MySQL

StackOverflow https://stackoverflow.com//questions/21053799

  •  22-12-2019
  •  | 
  •  

Вопрос

У меня есть база данных с 1 столбцом, в котором есть текстовые поля.Мне нужно найти и смонтировать новый столбец с определенной подстрокой.Мой английский не очень хорош, поэтому я попытаюсь объяснить ниже.

Пример 1 поля:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, 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.Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum.Typi non habent 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 consuetudium lectorum.Mirum est notare quam 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 parum clari, fiant sollemnes in futurum.

Мне нужно найти и извлечь значение yyyyy это происходит после xxxx :, и положение переменной внутри текста.До сих пор я пробовал это:

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

Я знаю, что это может быть способом решить проблему, но я не могу заставить это работать правильно.(Я уже смотрел на это: Возвращает определенный текст из MySQL, используя LOCATE и SUBSTRING)

PS:"XXXX :" это всегда одно и то же...yyyyyy имеет переменное значение

Это было полезно?

Решение

пожалуйста, попробуйте это

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

вот этот SQLFiddle

не уверен, почему это не работает у вас, возможно, попробуйте этот вариант, посмотрите, работает ли это

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

Другие советы

Чтобы найти первое слово (или строку), которое следует за ним xxxx : (возможно, с пробелами вокруг или без них :) в текстовом блоке с использованием PHP и регулярных выражений:

$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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top