【问题标题】:Splitting data into 2 column in oracle在oracle中将数据拆分为2列
【发布时间】:2020-04-15 09:31:07
【问题描述】:

我在表 ColAColB 中有 1 列,我想在其中存储一些值。还有另一个表,我从中选择信息并将插入到该表中。 ColA 具有 VARCHAR(25) 长度,ColB 也具有 VARCHAR(25) 长度。现在我获取的数据超过了分配的长度。假设它有 35 个字符,我如何在 ColA 中拆分和选择 25 个字符并在 ColB 中休息?问这样的问题真的是不好的做法还是不好的方式?

INSERT INTO Master_Table
SELECT Val AS ColA, NULL AS ColB FROM Child_Table

希望我已经解释了我在寻找什么。

【问题讨论】:

  • 或许您需要名为SUBSTR的Oracle数据库内置函数?
  • 向我们展示一些示例 child_table 数据,以及您想要插入到 master_table 中的内容。 (使用格式化文本,而不是图像。)

标签: sql string oracle select sql-insert


【解决方案1】:

你可以使用字符串函数:

INSERT INTO Master_Table(ColA, ColB)
SELECT 
    SUBSTR(Val, 1, 25),    -- the first 25 characters of the string
    SUBSTR(Val, 26)        -- the reminder (if any)
FROM Child_Table

SUBSTR() 的三参数形式可让您定义起点和要占用的字符数。双参数形式从给定位置获取所有内容,直到字符串结尾。如果起点大于字符串的长度,则返回一个NULL 值。

【讨论】:

    【解决方案2】:

    这很可能是不好的做法。

    使用SUBSTR,例如

    insert into master_table (cola, colb)
      select substr(input_value, 1, 25),    --> first 25 characters go to COLA
             substr(input_value, 26)        --> the rest goes to COLB
      from another_table;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多