取消连接列 SQL
Posted
技术标签:
【中文标题】取消连接列 SQL【英文标题】:Un concat a column SQL 【发布时间】:2021-10-21 16:44:13 【问题描述】:我有一个这样的连接列(order_type):
OrderType
Data;Let;Data;Data;Let
我想从上面的列中创建两列
Data Let
3 2
【问题讨论】:
当您决定对数据使用连接列时,就会出现问题 - 每次您想对这些数据做某事时,您都必须越过障碍。这就是为什么连接列被认为是糟糕的表设计,应该像瘟疫一样避免。 不,它没有。我知道如何将上述列与分号分隔。我需要在新列中添加 Data 和 Let 的数量。 您的数据库设计处于 0NF 级别,即未规范化。这是一个人为的问题,您可以通过规范化数据库轻松避免。 @bot9123 这是应该包含在问题中的信息。请edit您的问题明确说明,并添加我们需要帮助您的任何其他信息 - 例如,数据是否始终是确切的字符串“Data”和“Let”?如果不是,那么列名是否会超过表中允许的最大列名数? 【参考方案1】:修复你的数据模型,虽然正确的方法可能无法立即完成,所以一个hacky的解决方法是只使用一些简单的字符串处理:
select
(length(ordertype) - length(Replace(ordertype,'Data',''))) / Length('Data') as Data,
(length(ordertype) - length(Replace(ordertype,'Let',''))) / Length('Let') as Let
from t
【讨论】:
以上是关于取消连接列 SQL的主要内容,如果未能解决你的问题,请参考以下文章