【发布时间】:2013-11-22 22:13:58
【问题描述】:
我有这样的字符串:
“澳大利亚/悉尼/第 2738 天/何塞和卡林”
我需要将它分成几列。但这是棘手的部分。字符串也可能看起来像
“英国/曼彻斯特/中心/第 627 天/卢卡斯和妮可”。
我认为所有字符串都有一个模板:
"%/%/D%/% 和%"
我需要将每个“%”移动到另一个字段/列。
“英国”、“曼彻斯特/中心”、“第 627 天”、“卢卡斯”、“妮可”
inb4:使用 mysql 5.5 谢谢! 尼克。
【问题讨论】:
我有这样的字符串:
“澳大利亚/悉尼/第 2738 天/何塞和卡林”
我需要将它分成几列。但这是棘手的部分。字符串也可能看起来像
“英国/曼彻斯特/中心/第 627 天/卢卡斯和妮可”。
我认为所有字符串都有一个模板:
"%/%/D%/% 和%"
我需要将每个“%”移动到另一个字段/列。
“英国”、“曼彻斯特/中心”、“第 627 天”、“卢卡斯”、“妮可”
inb4:使用 mysql 5.5 谢谢! 尼克。
【问题讨论】:
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
【讨论】:
不确定,如果 MySQL 本身可以做到这一点。但是您可以添加一个用户定义的函数来执行此操作,如果您有固定数量的由 / 分隔的字段,则更容易。如果您想要动态解决方案,这有点困难,甚至在您的脚本语言中也必须注意这一点,而不是查询。
如果有帮助,只是一点方向:http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/
【讨论】: