sql - 是否有可能将单元格数据拆分为 Oracle 中的多个列
问题描述
我的表中有一个 clob 列,其数据如下所示
Name: ABC
Place: XYZ
Age: 123
Role: Developer
Skill: SQL
表 emp 中有数百条记录,其中每个 emp_id 都会有一个列和上面的描述。现在我想将此数据显示为 emp id 的每一列。像这样的东西
select emp_id, name, place, age, role, skill from emp where emp_id=xx;
这可以使用reg exp吗?或任何其他方式?请建议。
解决方案
是的,可以在 CLOB 列上使用 REGEXP_SUBSTR:
OPS$ORACLE@FTEX>desc emp;
Name Null? Type
----------------------------------------------------------------- -------- --------------------------------------------
EMP_ID NUMBER
X CLOB
OPS$ORACLE@FTEX>select * from emp;
EMP_ID X
---------- --------------------------------------------------------------------------------
1 Name: ABC Place: XYZ Age: 123 Role: Developer Skill: SQL
OPS$ORACLE@FTEX>create or replace view v_emp as
2 (
3 select emp_id,
4 regexp_substr(x, '(\S*)(\:)(\s)(\S*)', 1, 1, null, 4) as Name,
5 regexp_substr(x, '(\S*)(\:)(\s)(\S*)', 1, 2, null, 4) as Place,
6 regexp_substr(x, '(\S*)(\:)(\s)(\S*)', 1, 3, null, 4) as Age,
7 regexp_substr(x, '(\S*)(\:)(\s)(\S*)', 1, 4, null, 4) as Role,
8 regexp_substr(x, '(\S*)(\:)(\s)(\S*)', 1, 5, null, 4) as Skill
9 from emp
10 );
View created.
OPS$ORACLE@FTEX>select * from v_emp;
EMP_ID NAME PLACE AGE ROLE SKILL
---------- -------------------- -------------------- ----- -------------------- --------------------
1 ABC XYZ 123 Developer SQL
OPS$ORACLE@FTEX>
推荐阅读
- python - 熊猫将文本附加到行中
- python - 匹配熊猫数据框中的日期时间 YYYY-MM-DD 对象
- java - 线程“Thread-2”中的异常 java.lang.NoSuchMethodError: kotlin.io.ByteStreamsKt.readBytes(Ljava/io/InputStream;) 用于 PACT 测试
- javascript - 使用反应上下文 api 从帮助函数显示加载器
- azure-devops - 基于 Azure Devops 中的特定状态冻结工作项的表单或页面上的所有字段的技术
- angular - Angular combineLatest:combineLatest 中允许多少订阅?订阅数量有限制吗?
- node.js - Node.js 中多人游戏的时机
- php - 如何从 web api 获取 json 数据到 android 应用程序?
- python - 正则表达式python中的多个匹配词
- typo3 - Typo3 9.5:停用 Slugs 并改用 id=123?