【问题标题】:Un concat a column SQL取消连接列 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”?如果不是,那么列名是否会超过表中允许的最大列名数?

标签: sql postgresql greenplum


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    相关资源
    最近更新 更多