drtoaamk20278
2018-09-13 08:50
浏览 61
已采纳

php或mysql substring_index中的字符串切片

Output of following query has to be sliced.

GROUP_CONCAT(DISTINCT subject.id, '-', subject.en_title ORDER BY subject.id) AS sub,

Output is

3-Math
4-Science

I am Using PHP substr

$sub=substr(strstr($row['sub'], '-'), 1);

so result would be

Math
Science

But It would be better, if it can be sliced in mysql, because I think it reduces php code and less data fetched from database. So I have tried SUBSTRING_INDEX

SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT subject.id, '-', subject.en_title ORDER BY subject.id), '-', -1) AS sub,

But I get only one row

Science

Here, does SUBSTRING_INDEX affect to select row ? if not how can I fetch expected output

图片转代码服务由CSDN问答提供 功能建议

必须对以下查询的输出进行切片。

  GROUP_CONCAT  (DISTINCT subject.id,' - ',subject.en_title ORDER BY subject.id)AS sub,
   
 
 

输出 < pre> 3-Math 4-Science

我正在使用PHP substr $ sub = substr(strstr($ row ['sub'],' - '),1);

所以结果将是< / p>

  Math 
Science 
   
 
 

但如果可以在mysql中切片,那会更好,因为我认为 它减少了PHP代码,减少了从数据库中提取的数据。 我尝试过 SUBSTRING_INDEX

  SUBSTRING_INDEX(GROUP_CONCAT(DISTINCT subject.id,' - ')  ,subject.en_title ORDER BY subject.id),' - ', -  1)AS sub,
   
 
 

但我只得到一行 <前> Science

这里, SUBSTRING_INDEX 会影响选择行吗? 如果不是,我如何获取预期的输出

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douguan1887 2018-09-13 09:09
    已采纳

    You don't need to CONCAT subject.id. You can directly use DISTINCT clause on subject.en_title. Use the following expression instead:

    GROUP_CONCAT(DISTINCT subject.en_title ORDER BY subject.id) AS sub
    
    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题