【问题标题】:Specific split record (string) into several fields将特定的记录(字符串)拆分成几个字段
【发布时间】:2013-11-22 22:13:58
【问题描述】:

我有这样的字符串:

“澳大利亚/悉尼/第 2738 天/何塞和卡林”

我需要将它分成几列。但这是棘手的部分。字符串也可能看起来像

“英国/曼彻斯特/中心/第 627 天/卢卡斯和妮可”。

我认为所有字符串都有一个模板:

"%/%/D%/% 和%"

我需要将每个“%”移动到另一个字段/列。

“英国”、“曼彻斯特/中心”、“第 627 天”、“卢卡斯”、“妮可”

inb4:使用 mysql 5.5 谢谢! 尼克。

【问题讨论】:

    标签: mysql sql string split


    【解决方案1】:

    MySQL 没有字符串的拆分函数,但here 你可以看到一个用户定义的函数,你可以用它来完成你的工作。

    例如:

    select SPLIT_STR(SPLIT_STR(ColumnA, "/D",1), "/", 1),
    CONCAT(SPLIT_STR(SPLIT_STR(ColumnA, "/D",1), "/", 2),'/',
       SPLIT_STR(SPLIT_STR(ColumnA, "/D",1), "/", 3)),
    CONCAT('D',SPLIT_STR(SPLIT_STR(ColumnA, "/D",2), "/", 1)),
    SPLIT_STR(SPLIT_STR(ColumnA, "/D",2), "/", 2)
    from table1
    

    输出(SQL fiddle):

    Australia   Sydney/             Day 2738    Jose and Carlin
    UK          Manchester/Centre   Day 627     Lucas and Nicole
    

    【讨论】:

    • 我有几个分隔符,因为动态第二个字段。它可以包含分隔符“/”,如我在第二个示例中所示。 SPLIT_STR 可以处理这个吗?
    【解决方案2】:

    不确定,如果 MySQL 本身可以做到这一点。但是您可以添加一个用户定义的函数来执行此操作,如果您有固定数量的由 / 分隔的字段,则更容易。如果您想要动态解决方案,这有点困难,甚至在您的脚本语言中也必须注意这一点,而不是查询。

    如果有帮助,只是一点方向:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

    【讨论】:

    • 我在撰写答案时得到了更新。但是好东西……那个帖子真的很好。但您应该始终相信来源,因此我发布了 URL。
    • 我在第一个回答中贴出了作者的网址...查看链接,自己看...
    猜你喜欢
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-01
    • 1970-01-01
    • 2015-12-18
    • 2016-07-31
    • 2010-12-22
    相关资源
    最近更新 更多