문제

텍스트 필드가 있는 1개의 열이 있는 데이터베이스가 있습니다.특정 하위 문자열이 포함된 새 열을 찾아 마운트해야 합니다.제가 영어를 잘 못해서 아래에 설명을 해보겠습니다.

필드 1개 예시:

Lorem ipsum dolor sit amet, consectetuer hoodiscing elit, sed diam nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.ut wisi enim ad minim veniam, quis nostrud 운동을하는 Ullamcorper suscipit lobortis nisl ut aliquip ea commodo 결과.velit esse mulestie 결과, vel illum dolore eu feugiat nulla facilisis at at XXXX :yyyyyy Vero eros et accumsan et irumsan et irusto dignissim qui blandit pra ruptatum zzril delenit augue duis duis dolore nulla facilisi.Nam Liber Temp Soluta nobis eleifend 옵션 congue nihil im유형은 non habent claritatem insitam;iis qui의 escus gententis는 eorum claritatem을 촉진합니다.조사는 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 per seacula quarta decima et quinta decima.Eodem modo typi, qui nunc nobis videntur parum clari, futurum의 약탈자 Sollemnes.

의 가치를 찾아 추출해야 합니다. yyyyy 그 뒤에 오는 xxxx :, 텍스트 내부의 변수 위치.지금까지 나는 이것을 시도했습니다 :

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

그것이 문제를 해결하는 방법일 수도 있다는 것을 알고 있지만 이것이 제대로 작동하도록 할 수는 없습니다.(이미 살펴봤습니다. LOCATE 및 SUBSTRING을 사용하여 MySQL에서 특정 텍스트를 반환합니다.)

추신:"XXXX:"는 항상 똑같습니다...yyyyy에 변수 값이 있습니다

도움이 되었습니까?

해결책

이것을 시도하십시오

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