網站首頁 編程語言 正文
1. 使用 regexp_substr() 函數
1.1 方式1
如下:
select regexp_substr('bbb,aaa,ccc', '[^,]+', 1, level) as split_result from dual connect by level <= length('bbb,aaa,ccc') - length(replace('bbb,aaa,ccc', ',')) + 1;
1.2 方式2
如下:
select regexp_substr(replace('aaa;bbb;ccb', '', ';'), '[^;]+', 1, level) as split_result from dual connect by level <= regexp_count('aaa;bb;', ';') + 1;
或者 with
寫法,如下
with temp as (select 'bbb,aaa,ccc' as str from dual) select regexp_substr(replace(str, ',', ' ,'), '[^,]+', 1, level) from temp connect by level <= regexp_count(str, ',') + 1
1.3 注意問題(尤其是存儲過程中用到,可能會入坑)
問題情況(可能會出現空行),如下:
解決問題:
上述空行不是我們所需要的,所以排除即可,如下:
select split_result,length(split_result) from ( select regexp_substr(replace('aaa;bb;', '', ';'), '[^;]+', 1, level) as split_result from dual connect by level <= regexp_count('aaa;bb;', ';') + 1) where split_result is not null;
2. 自定義函數
2.1 自定義類型 table
如下:
create or replace type result_split_list as table of varchar2(100);
2.2 自定義函數
2.2.1 自定義函數
如下:
create or replace function split_strs(strs varchar2, type_split varchar2) return result_split_list pipelined is index_num pls_integer; str_list varchar2(100) := strs; begin loop index_num := instr(str_list, type_split); if index_num > 0 then pipe row(substr(str_list, 1, index_num - 1)); str_list := substr(str_list, index_num + length(type_split)); else pipe row(str_list); exit; end if; end loop; return; end split_strs;
2.2.2 效果如下:
如下:
2.3 Oracle查看<Collection> 類型數據
上面的效果我們看到查看到的是<Collection> 類型,不方便查看數據,處理如下:
select * from table (select split_strs('aaa,bbb,ccc',',') from dual);
總結
原文鏈接:https://blog.csdn.net/suixinfeixiangfei/article/details/127577820
相關推薦
- 2023-11-20 帶寬單位是什么?帶寬單位詳解?帶寬單位如何換算?
- 2022-10-23 C/C++指針介紹與使用詳解_C 語言
- 2022-09-07 C++實現哈希散列表的示例_C 語言
- 2021-12-08 el-cascader 級聯選擇器回顯數據 (帶有子級children)
- 2022-10-13 python中arrow庫用法大全_python
- 2022-03-27 c++模擬實現string類詳情_C 語言
- 2022-12-23 Python?UI自動化測試Web?frame及多窗口切換_python
- 2023-01-23 C#實現懸浮窗口的方法詳解_C#教程
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支