2011-01-03 2 views
0

PHP에서 사용하고있는 sql 문에서 파일 이름을 확인하려고합니다. 작성중인 WordPress 템플릿에 있습니다.wordpress의 sql 문에서 RTRIM

나는 극단적으로 LTRIM을 사용하여 끝에 _a의 이미지 만 가져 오려고합니다.

예를 들어 나는

이 임은에서 사용하는 것입니다 ... 폴더

  • clientone_a.jpg
  • clienttwo_b.jpg
  • ... 등의 일련의 이미지의 무리가 순간이지만 작동하지 않습니다.

    $query = " 
        SELECT F.field_value, P.alttext, P.filename, P.description, p.galleryid, 
         G.path 
        FROM wp_nggcf_field_values F, 
         wp_ngg_pictures P, 
         wp_ngg_gallery G 
        WHERE F.fid=1 
         AND (F.field_value='".$data."') 
         AND F.pid = P.PID 
         AND P.galleryid = G.gid 
         AND LTRIM(P.filename,'_') = '_a.jpg' 
    "; 
    
    $caseStudiesResults = $wpdb->get_results($query); 
    

    그것은 그냥 모든 이미지를 다시 가져가없이 문제가 마지막 LTRIM(P.filename,'_') = '_a.jpg', 그리고 나는 _a 일 만 다시 지참 후입니다.

    내가 잘못 가고있는 부분에 대한 아이디어가 있습니까?

    감사

답변

2

문제는 잘못된 기능을 사용하고 있다는 점이다. LTRIM()은 단순히 선행 공백을 제거합니다. 당신이 찾고있는 SUBSTRING_INDEX()

AND SUBSTRING_INDEX(P.filename, '_', -1) = 'a.jpg' 

-1는, 1가에 이르기까지 모든 것 (-2 마지막 단락에 제 2의 오른쪽에있는 모든 것이 마지막 구분자의 오른쪽에 모든 것을 반환을 알 수있다 ...) 등, 최초의 왼쪽

편집 : 지금까지 그것을, 당신이 수행하여 문자열 기능을 테스트 할 수 있습니다 테스트로 :

SELECT SUBSTRING_INDEX('test_a.jpg', '_', -1) = 'a.jpg' 
을3210

실행하고 작동하는지 확인하십시오 (저에게 맞았습니다). 정적 값을 넣어, 당신은 내가 찾던 바로 무엇을 그

+0

substring_index에 ... 전체 큰 쿼리를 실행하지 않고 그것을 밖으로 시도 할 수 있습니다! 고마워요. – mro

1

대안

select substring('clientone_a.jpg', -6)='_a.jpg'; 
+0

비교 ('_a.jpg')의 정적 특성을 감안할 때, 꽤 잘 작동 할 것입니다 (함수 간의 성능 차이는 확실하지 않지만 너무 크지는 않습니다). +1 당신에게도 ... – ircmaxell

관련 문제