首页 > 解决方案 > 在oracle中将数据拆分为2列

问题描述

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

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

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

标签: sqlstringoracleselectsql-insert

解决方案


您可以使用字符串函数:

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值。


推荐阅读