sql - how to properly split a tab delimited value into individual columns in ORACLE
问题描述
I'm working with this query:
SELECT
REGEXP_SUBSTR ('test1 test2 test3', '[^\t]+', 1, 1) field1,
REGEXP_SUBSTR ('test1 test2 test3', '[^\t]+', 1, 2) field2,
REGEXP_SUBSTR ('test1 test2 test3', '[^\t]+', 1, 3) field3
FROM DUAL
I'm looking for each field to have each value. this is a tab-delimited string. But I'm getting random outputs to it.
Looking for:
field1 field2 field3
test1 test2 test3
Getting:
field1 field2 field3
es es es
what am I missing?
thanks
解决方案
[^\t]+
将匹配不是反斜杠且不是字符的t
字符。
所以
SELECT
REGEXP_SUBSTR ('aaatbbb\ccc', '[^\t]+', 1, 1) field1,
REGEXP_SUBSTR ('aaatbbb\ccc', '[^\t]+', 1, 2) field2,
REGEXP_SUBSTR ('aaatbbb\ccc', '[^\t]+', 1, 3) field3
FROM DUAL
将输出:
字段1 | 字段2 | FIELD3 :----- | :----- | :----- 啊!bbb | ccc
将字符串拆分\
为t
如果要将其拆分为制表符,则:
SELECT
REGEXP_SUBSTR ('test1' || CHR(9) || 'test2' || CHR(9) || 'test3', '[^' || CHR(9) || ']+', 1, 1) field1,
REGEXP_SUBSTR ('test1' || CHR(9) || 'test2' || CHR(9) || 'test3', '[^' || CHR(9) || ']+', 1, 2) field2,
REGEXP_SUBSTR ('test1' || CHR(9) || 'test2' || CHR(9) || 'test3', '[^' || CHR(9) || ']+', 1, 3) field3
FROM DUAL
哪个输出:
字段1 | 字段2 | FIELD3 :----- | :----- | :----- 测试1 | 测试2 | 测试3
db<>在这里摆弄
推荐阅读
- javascript - NextJS:如何使用加载组件而不是 nprogress?
- python - 无论它们是否存在,如何在多索引数据透视中对 Pandas Dataframe 值求和?
- javascript - 无法在 WebBrowser 组件中处理 CoinHive
- pytest - pytest:如何在简短的测试摘要中输出绿色复选标记而不是通过
- three.js - 为什么我不能更改三个.js 的 CTM 文件的路径?
- css - 可见性时如何隐藏元素:隐藏不正确并且显示:无不起作用?
- azure - 无法从 Azure AD 中的注册应用程序获取访问令牌
- visual-studio-code - 设置 ctrl + tab 快捷方式以跳转到 IDE 的右下一个选项卡
- unity3d - 如何通过脚本更改 ConfigurableJoint 的角度?
- python - PyQt5 - 在不可编辑的 QComboBox 中需要 QCompleter 或等效项