在MySQL上分离查询值

在MySQL上分离查询值,mysql,Mysql,是否仍然可以在单个记录中分隔值,并使用此分隔信息创建新记录。这可以通过查询实现吗?例如,表中的值如下所示: Single COL level1Data.level2Data.level3Data level1Data.level2Data.level3Data level1Data.level2Data.level3Data 转换为: level1Col | level2Col | level3Col |

是否仍然可以在单个记录中分隔值,并使用此分隔信息创建新记录。这可以通过查询实现吗?例如,表中的值如下所示:

        Single COL
level1Data.level2Data.level3Data 
level1Data.level2Data.level3Data 
level1Data.level2Data.level3Data
转换为:

 level1Col   |   level2Col   |  level3Col
             |               |
Level1Data   |  Level2Data   |  Level3Data
Level1Data   |  Level2Data   |  Level3Data
Level1Data   |  Level2Data   |  Level3Data

我认为这里唯一的选择是以类似的方式对字段字符串进行子串:

SUBSTRING(SingleCOL, 0, LOCATE('.', SingleCOL)) AS level1Col,
SUBSTRING(SingleCOL, LOCATE('.', SingleCOL), LOCATE('.', SingleCOL, LOCATE('.', SingleCOL))) AS level2Col

我认为这里唯一的选择是以类似的方式对字段字符串进行子串:

SUBSTRING(SingleCOL, 0, LOCATE('.', SingleCOL)) AS level1Col,
SUBSTRING(SingleCOL, LOCATE('.', SingleCOL), LOCATE('.', SingleCOL, LOCATE('.', SingleCOL))) AS level2Col
使用子字符串索引

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
使用子字符串索引

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
试试看-

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)
将列名放在字符串更新的位置。

试试看-

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)

将列名放在字符串更新的位置。

您尝试过这个吗?你试过这个吗?谢谢你的回复,我尝试了这个,它也起了作用。谢谢你的回复,我尝试了这个,它也起了作用。