1

Is there anyway to separate values within a single record and create a new record with this separate information. Is this possible with a query? For example, a value in a table is as following:

        Single COL
level1Data.level2Data.level3Data 
level1Data.level2Data.level3Data 
level1Data.level2Data.level3Data

converted to:

 level1Col   |   level2Col   |  level3Col
             |               |
Level1Data   |  Level2Data   |  Level3Data
Level1Data   |  Level2Data   |  Level3Data
Level1Data   |  Level2Data   |  Level3Data
henriale
  • 1,012
  • 9
  • 21
Etcetera
  • 130
  • 14
  • 3
    Have you tried this? http://stackoverflow.com/questions/471914/can-you-split-explode-a-field-in-a-mysql-query – rlanvin Aug 26 '15 at 12:33

3 Answers3

3

use SUBSTRING_INDEX

SELECT SUBSTRING_INDEX(val, '.', 1) AS c1,
       SUBSTRING_INDEX(SUBSTRING_INDEX(val, '.', 2), '.', -1) AS c2,
       SUBSTRING_INDEX(SUBSTRING_INDEX(val, '.', -1), '.', 1) AS c3 
FROM table
mynawaz
  • 1,599
  • 1
  • 9
  • 16
1

I think that the only option here is to substring the field string in a similar way :

SUBSTRING(SingleCOL, 0, LOCATE('.', SingleCOL)) AS level1Col,
SUBSTRING(SingleCOL, LOCATE('.', SingleCOL), LOCATE('.', SingleCOL, LOCATE('.', SingleCOL))) AS level2Col
aleroot
  • 71,077
  • 30
  • 176
  • 213
1

try it-

SELECT 'level1Data.level2Data.level3Data', 
SUBSTRING_INDEX('level1Data.level2Data.level3Data','.',1), SUBSTRING_INDEX(SUBSTRING_INDEX('level1Data.level2Data.level3Data','.',2),'.',-1),
SUBSTRING_INDEX('level1Data.level2Data.level3Data','.',-1)

put your column name where string is updated.

Zafar Malik
  • 6,734
  • 2
  • 19
  • 30