在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)
将列名放在字符串更新的位置。您尝试过这个吗?你试过这个吗?谢谢你的回复,我尝试了这个,它也起了作用。谢谢你的回复,我尝试了这个,它也起了作用。