RTRIM在wordpress中的sql语句中

时间:2011-01-03 19:03:02

标签: sql mysql

我正在尝试检查sql语句中的文件名,我正在使用PHP,在我正在构建的wordpress模板中。

基本上我正在尝试使用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 个答案:

答案 0 :(得分:2)

问题是你使用了错误的功能。 LTRIM()只是移除了前导空格。您要找的是SUBSTRING_INDEX()

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

-1告诉它返回最终分隔符右侧的所有内容(-2将是第2个到最后分隔符右侧的所有内容,1将是所有内容第一个左边等等)...

编辑:就测试而言,您可以通过以下方式测试字符串函数:

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

运行它,看它是否有效(它对我有用)。通过设置静态值,您可以试用它而无需运行整个大查询...

答案 1 :(得分:1)

替代substring_index

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