How to best split csv strings in oracle 9i(如何在 oracle 9i 中最好地拆分 csv 字符串)
问题描述
我希望能够在 Oracle 9i 中拆分 csv 字符串
I want to be able to split csv strings in Oracle 9i
我已阅读以下文章http://www.oappssurd.com/2009/03/string-split-in-oracle.html
但我不明白如何进行这项工作.这是我的一些相关问题
But I didn't understand how to make this work. Here are some of my questions pertaining to it
- 这是否可以在 Oracle 9i 中使用,如果不能,为什么不可以?
- 是否有比上述解决方案更好的拆分 csv 字符串的方法?
- 我需要创建一个新类型吗?如果是这样,我需要为此获得特定权限吗?
- 我可以在函数中声明类型吗?
推荐答案
这是一个用于 Oracle 的字符串标记器,它比那个页面更简单一些,但不知道它是否一样快:
Here's a string tokenizer for Oracle that's a little more straightforward than that page, but no idea if it's as fast:
create or replace function splitter_count(str in varchar2, delim in char) return int as
val int;
begin
val := length(replace(str, delim, delim || ' '));
return val - length(str);
end;
create type token_list is varray(100) of varchar2(200);
CREATE or replace function tokenize (str varchar2, delim char) return token_list as
ret token_list;
target int;
i int;
this_delim int;
last_delim int;
BEGIN
ret := token_list();
i := 1;
last_delim := 0;
target := splitter_count(str, delim);
while i <= target
loop
ret.extend();
this_delim := instr(str, delim, 1, i);
ret(i):= substr(str, last_delim + 1, this_delim - last_delim -1);
i := i + 1;
last_delim := this_delim;
end loop;
ret.extend();
ret(i):= substr(str, last_delim + 1);
return ret;
end;
你可以这样使用它:
select tokenize('hi you person', ' ') from dual;
VARCHAR(hi,you,person)
这篇关于如何在 oracle 9i 中最好地拆分 csv 字符串的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 oracle 9i 中最好地拆分 csv 字符串


- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- SQL 临时表问题 2022-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01