用分号查询列到单独的行中[重复]
Posted
技术标签:
【中文标题】用分号查询列到单独的行中[重复]【英文标题】:Query column with semicolon into separate rows [duplicate] 【发布时间】:2021-06-20 23:19:13 【问题描述】:基本上,我有一个名为 Table1
的表,其中有一列名为 emails
的列包含用分号分隔的电子邮件地址。
例如:
第 1 行:
test1@gmail.com; test2@gmail.com
第 2 行:
test4@gmail.com; test5@gmail.com; test6@gmail.com
我想在表格上进行选择查询,以便在每次有分号拆分时在其自己的行上显示每封电子邮件。如何做到这一点?
【问题讨论】:
不要在单行的列中放置多个值。这不是 SQL 可以轻松工作的方式。使用单独的表和 JOIN。所以它目前不可能以目前的形式出现。 首先规范化你的架构。见"Is storing a delimited list in a database column really that bad?"(剧透:是的。)。 我明白了,有没有办法在查询中使用临时表来拆分数据? 寻找分割字符串函数 您可以在 Stack Overflow 上找到许多带有搜索词的帖子:“将字符串拆分为行”或类似内容。在我发现一篇这样的帖子具有多种不同的解决方案后,我投票将这个问题标记为重复问题。它们都不是很方便或优雅。正如其他人所评论的那样,最好使用每个值一行来存储您的数据。 【参考方案1】:最好创建一个数组或对象数组并保存数据,例如..
[test1@gmail.com, test2@gmail.com, ...]
[email: test1@gmail.com, email: test2@gmail.com]
通过这种方式,您可以使用查询或您正在使用的任何编程语言轻松获取数据。
【讨论】:
我目前无法修改表的架构,是否有其他解决方法来处理以分号分隔的列表?任何建议表示赞赏 您是否使用任何后端语言?还是只是 mysql 查询? 是的,我也在使用 php PDO hmm,然后在简单的选择查询后尝试explode()方法,结果相同,$str = "test@gamil.com; test1@gmail.com; test2@gmail.com";然后 print_r (explode(";",$str));希望这会有所帮助 这里,($str) 是你从表中得到的以上是关于用分号查询列到单独的行中[重复]的主要内容,如果未能解决你的问题,请参考以下文章