【问题标题】:How to merge (combine) 2 columns into 1 in oracle?如何在 oracle 中将 2 列合并(组合)为 1?
【发布时间】:2013-12-14 14:50:00
【问题描述】:

我有 3 个文本字段,用户在其中键入表名和 2 个需要合并的列名。

我应该如何将 2 列值合并(组合)为 1?

我使用 oracle 11g 企业版

【问题讨论】:

  • ResultSet res=stmt.executeQuery("插入 " +table_name.trim()+(first_column_name.trim())+" 值 "+ (first_column_name.trim() || second_column_name.trim( )));
  • 我将 firs_column_name 和第二个作为参数传递给 sql 语句,但它表明使用 || 的方式不正确操作员。请帮忙! :)
  • 请澄清合并的含义。您是在谈论将结果集中的两列合并为一列吗?或者实际上改变表结构?还是完全不同的东西?

标签: sql oracle merge


【解决方案1】:

连接?

select col1 || ' ' || col2 from tablex

【讨论】:

    【解决方案2】:

    这是一个非常模糊的要求。可以连接这些值吗?

    insert into sometable( Column1 )
    values ( Column1 || Column2 );
    

    如果您需要指定要插入的表名,那么您将需要使用动态 SQL 来实现这一点。您是否还需要指定目标列名?此示例假定您将使用 PL/SQL,这可能不适合您的情况。

    sql_stmt := 'INSERT INTO '|| specified_table || '(' || merge_column || ') VALUES ( :1 )';
    EXECUTE IMMEDIATE sql_stmt USING column1 || column2;
    

    http://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems017.htm

    【讨论】:

    • 感谢您的回复!是的,我的意思是连接。让我试试这个sql语句。我稍后会回复:)
    • 是的,我需要指定目标列。它可以是新列,也可以替换现有列之一。
    • ResultSet res=stmt.executeQuery("插入" +table_name.trim()+(first_column_name.trim())+" 值"+ (first_column_name.trim() || second_column_name.trim( )));
    • 我将 first_column_name 和 second 作为参数传递给 sql 语句,但它表明使用 || 的方式不正确操作员。请帮忙! :)
    • 使用“+”。这就是您用来连接 DML 字符串中其他地方的内容。 '||'用于 PL/SQL 中的连接。
    【解决方案3】:

    您可以制作另一列(辅助列)并将其他两列替换为这一列。

    【讨论】:

      【解决方案4】:

      在 Oracle Live 中合并列

      SELECT CONCAT (ENAME, JOB) from scott.EMP
      

      上述命令将合并ENAMEJOB列,这2个不同的列将显示在一个列中

      【讨论】:

        猜你喜欢
        • 2018-10-20
        • 1970-01-01
        • 1970-01-01
        • 2015-04-24
        • 2021-12-22
        • 1970-01-01
        • 2012-06-26
        • 1970-01-01
        相关资源
        最近更新 更多