sql - 在oracle中将数据拆分为2列
问题描述
ColA
我在 table中有 1 列ColB
,我想在其中存储一些值。还有另一个表,我从中选择信息并将插入到该表中。ColA
有VARCHAR(25)
长度,ColB
也有VARCHAR(25)
长度。现在我获取的数据超过了分配的长度。假设它有 35 个字符,我如何拆分并选择 25 个字符ColA
并休息ColB
?问这样的问题真的是不好的做法还是不好的方式?
INSERT INTO Master_Table
SELECT Val AS ColA, NULL AS ColB FROM Child_Table
希望我已经解释了我在寻找什么。
解决方案
您可以使用字符串函数:
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
值。
推荐阅读
- javascript - 根据现有子数组中的值创建一个新数组,javascript
- ruby-on-rails - Rails - 多态has_many:通过模型不建立在创建
- python - 有什么方法可以使像素不可见的油漆更平滑?
- node.js - 在整个应用程序中使用单个数据库连接?
- objective-c - Objective-C中的weakSelf和strongSelf
- nginx - 生产服务器 NGINX 上的 Laravel 404
- c# - 如何在c#中等待异步函数
- git - 在 Bitbucket 上重命名分支后如何推送更改?
- android - SDK平台如何在android studio中工作?
- python - 重新排序列表,以使所有先前数字的总和尽可能小于当前数字