質問

I have the following:

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

And like to get:

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

Is this possible by sql query? Thx!

役に立ちましたか?

解決

It's possible using sql query:

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;

他のヒント

one way is to separate them after you read the query results!

Query:

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

Example in PHP (Could be anything):

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];
    }
}
SELECT id, 
       SUBSTRING_INDEX(`value`, ':', 1) as valueA, 
       SUBSTRING(`value`,5,3) as valueB, 
       SUBSTRING(`value`,9) as valueC 
          FROM Table_name

use above query.

use this

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top