首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串的元素拆分到多个列

问将字符串的元素拆分到多个列
EN

Stack Overflow用户
提问于 2011-09-29 05:10:00
回答 2查看 276关注 0票数 0

我想在MySQL中将包含带有文章引用的字符串的列拆分为多个列。例如,以下字符串

代码语言:javascript
复制
North American Birds 53(1) 1999: 27-29

将被分成“北美鸟类”,53,1,1999,27-19。我知道我可以用substring_index做一些这样的事情,但这不能用于将期刊名称(北美鸟类)从卷(53)中分离出来。你知道我该怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-29 06:28:13

您可以使用数字作为分隔符。

缓慢而丑陋的代码,但我猜它可以工作

代码语言:javascript
复制
SELECT 
  s.id
  ,SUBSTRING(s.title,1, PosOfFirstNumber-1) as booktitle
  ,SUBSTRING(s.title, PosOfFirstNumber) as Remainder
FROM 
  (SELECT
      id
      ,title
      ,LEAST(
          IFNULL(NULLIF(LOCATE('1',title),0),999)
          ,IFNULL(NULLIF(LOCATE('2',title),0),999)
          ,IFNULL(NULLIF(LOCATE('3',title),0),999)
          ,IFNULL(NULLIF(LOCATE('4',title),0),999)
          ,IFNULL(NULLIF(LOCATE('5',title),0),999)
          ,IFNULL(NULLIF(LOCATE('6',title),0),999)
          ,IFNULL(NULLIF(LOCATE('7',title),0),999)
          ,IFNULL(NULLIF(LOCATE('8',title),0),999)
          ,IFNULL(NULLIF(LOCATE('9',title),0),999)
          ,IFNULL(NULLIF(LOCATE('0',title),0),999)
        )) as PosOfFirstNumber
    FROM table1 ) s
票数 1
EN

Stack Overflow用户

发布于 2011-09-29 06:02:50

要问的第一个问题是,您是否计划在将字符串插入数据库之前或之后将其拆分到不同的列中?我建议在插入之前拆分,但这个建议可能太晚了。

如果在插入之前拆分,则应使用正则表达式来解析数据,然后构建适当的SQL插入。这是一个Java regular expressions example。

如果在数据已在数据库中之后拆分数据,则需要创建一个SQL,该SQL具有特定于数据字符串的模式匹配。这是一个IBM article describing different SQL code strategies。

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

https://stackoverflow.com/questions/7589632

复制
相关文章

相似问题

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