【问题标题】:MySQL separate and select values from one value fieldMySQL 从一个值字段中分离和选择值
【发布时间】:2013-10-31 04:39:21
【问题描述】:

我有以下几点:

id | value
1 | abc:432:xyz
2 | 678:123:iop

又想得到:

id | valueA | valueB | valueC
1 | abc | 432 | xyz
2 | 678 | 123 | iop

这可以通过sql查询吗? 谢谢!

【问题讨论】:

标签: mysql separator


【解决方案1】:

可以使用sql查询:

SELECT id,SUBSTRING_INDEX(`value`, ':', 1) AS valueA ,
SUBSTRING_INDEX(SUBSTRING_INDEX(value,':',2),':',-1) AS valueB ,  SUBSTRING_INDEX(SUBSTRING_INDEX(value,':',-2),':',-1) AS valueC 
FROM   tablename;

【讨论】:

    【解决方案2】:

    一种方法是在阅读查询结果后将它们分开!

    查询:

    $this->db->query("select id, value from tablename");
    

    PHP 中的示例(可以是任何东西):

    foreach($resultRecord as $record){
        $segment = explode(":",$record->value);
        echo "<tr>";
        echo "<td>".$record->id;
        for($i=0;$i<count($segment);i++){
           echo "<td>".$segment[i];
        }
    }
    

    【讨论】:

      【解决方案3】:
      SELECT id, 
             SUBSTRING_INDEX(`value`, ':', 1) as valueA, 
             SUBSTRING(`value`,5,3) as valueB, 
             SUBSTRING(`value`,9) as valueC 
                FROM Table_name
      

      使用上面的查询。

      【讨论】:

        【解决方案4】:

        使用这个

        create table test2 as SELECT id,substr(value,1,3) as valueA,substr(value,5,3) as valueB,substr(value,9,3) as valueC FROM test

        【讨论】:

          猜你喜欢
          • 2015-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-31
          • 2012-03-20
          • 2022-01-01
          • 2017-05-05
          • 2011-06-24
          相关资源
          最近更新 更多