Pergunta

Eu tenho um banco de dados com 1 coluna que tem campos de texto.Eu preciso de encontrar e montar uma nova coluna com uma subseqüência de caracteres.Meu inglês não é bom, então eu vou tentar explicar abaixo.

Exemplo 1 campo:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod resposta ut laoreet dolore magna aliquam erat volutpat.Ut wisi enim ad minim veniam, quis nostrud exerci ção ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.Duis autem vel eum iriure dolor no hendrerit em vulputate velit esse molestie consequat, vel illum dolore ue 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 opção congue nihil imperdiet domingo id quod mazim placerat facer possim assum.Typi non habent claritatem insitam;est usus legentis no 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 por seacula decima quarta et decima quinta.Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes em futurum.

Eu preciso encontrar e extrair o valor de yyyyy o que vem depois xxxx :, e a posição da variável dentro do texto.Até então, eu tentei isso:

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

Eu sei que pode ser a maneira de resolvê-lo, mas eu não posso fazer isso funciona direito.(Eu olhei esse já: Retorno texto específico do MySQL usando o LOCALIZAR e SUBSTRING)

PS:O "XXXX :" é sempre o mesmo...o yyyyy tem o valor de uma variável

Foi útil?

Solução

por favor, tente isso

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

aqui está o sqlFiddle

não sei por que ele não está funcionando para você, talvez tente esta variação ver se funciona

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

Outras dicas

Para encontrar a primeira palavra (ou uma seqüência de caracteres) que segue xxxx : (possivelmente com e sem espaços em torno de :) em um bloco de texto usando 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;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top