首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL -分隔冒号分隔成新列的列值

问MYSQL -分隔冒号分隔成新列的列值
EN

Stack Overflow用户
提问于 2016-11-01 06:04:37
回答 1查看 338关注 0票数 0

我有张这样的桌子,

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `cms` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `cms` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


INSERT INTO `cms` (`id`, `cms`) VALUES
(1, 'cms:/o:freebsd:freebsd:2.1.7'),
(2, 'cms:/o:netbsd:netbsd:1.0');

​

​

我需要将cms列值拆分为四个额外的列,因此必须用冒号分隔。

我需要像这样的输出

​

​

对此需要查询

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-01 06:45:25

尝尝这个。它有点脏,但它起作用了:

代码语言:javascript
复制
select source.*
, left(cms, FirstColon - 1) as CMS2
, mid(cms, FirstColon + 1, SecondColon - FirstColon -1) as Extension 
, mid(cms, SecondColon + 1, ThirdColon - SecondColon -1) as Product
, mid(cms, ThirdColon + 1, FourthColon - ThirdColon -1) as version
from (
    select a.*
    , locate(':', cms) 'FirstColon'
    , locate(':', cms, locate(':', cms) + 1) 'SecondColon'
    , locate(':', cms, locate(':', cms, locate(':', cms) + 1) + 1) 'ThirdColon'
    , locate(':', cms, locate(':', cms, locate(':', cms, locate(':', cms) + 1) + 1) + 1) 'FourthColon'
    from cms a
) source
;

但是,如果安装了Microsoft,则可以尝试Excel文本到列工具。只需将原始数据导出为Microsoft格式,并使用该工具即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40354897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档