create or replace procedure tokenizer(iStart in NUMBER,
sPattern in VARCHAR2, sBuffer in VARCHAR2,
sResult out VARCHAR2, iNextPos out NUMBER) is
nPos1 number;
nPos2 number;
begin
nPos1 := Instr(sBuffer, sPattern, iStart);
if nPos1 = 0 then
sResult := NULL;
else
nPos2 := Instr (sBuffer, sPattern, nPos1 + 1);
if nPos2 = 0 then
sResult := Rtrim(Ltrim(Substr(sBuffer, nPos1 + 1)));
iNextPos := nPos2;
else
sResult := Substr(sBuffer, nPos1 + 1, nPos2 - nPos1 - 1);
iNextPos := nPos2;
end if;
end if;
end tokenizer;
--测试tokenizer
create or replace procedure test_tokenizer is
sepr varchar2(1);
sbuf varchar2(200);
sres varchar2(200);
pos number := 1;
istart number;
begin
sbuf := '|Test1|Test2|Test3' || '|Test4';
sepr := '|';
--istart := 1;
--tokenizer(istart, sepr, sbuf, sres, pos);
--if (pos <> 0) then
--dbms_output.put_line (sres);
--end if;
while (pos <> 0)
loop
istart := pos;
tokenizer(istart, sepr, sbuf, sres, pos);
dbms_output.put_line(sres);
end loop;
end;
分享到:
相关推荐
本文将详细介绍如何在Oracle中实现字符串分隔,以及提供一个实用的面向对象的解决方案。 在Oracle中,字符串分隔通常涉及到将一个长字符串按照特定的分隔符切割成多个子字符串。Oracle提供了多种函数来实现这一功能...
在Oracle数据库中,有时我们需要将多个字符串连接成一个单一的字符串,这在处理报告或聚合数据时非常常见。Oracle提供了一些内置的聚集函数,如`LISTAGG`,但它们可能无法满足所有需求,比如在特定场景下需要自定义...
这个存储过程根据`arg2`的值选择执行不同的SQL语句,用于处理以逗号分隔的字符串。在实际应用中,存储过程可以根据需求处理更复杂的业务逻辑。 接下来,在润乾报表中调用这个存储过程,我们需要做以下步骤: 1. **...
6. **字符串处理**:在定义含有单引号的字符串时,需要双写单引号,或者使用自定义分隔符如`q'!!'`或`q'{}'`。 7. **变量与&符号**:在SQL*Plus中,&符号用于变量替换。如果不想让其起作用,可以使用`SET DEFINE ...
`LISTAGG`函数在分组查询中非常有用,它可以将一组字符串合并成一个单一的字符串,每个值之间用指定的分隔符分隔。 例如,如果我们有一个`employees`表,包含`first_name`和`last_name`字段,我们可以使用`CONCAT`...
- **需求背景**:处理带有分隔符的字符串是常见的数据处理任务之一。例如,给定一个由逗号分隔的字符串 `'123,zhonggou,mama,'`,要求将其拆分为独立的字段,并且最后一个字段后面保留一个逗号。 #### 3. 使用 PL/...
- **规范要求**:在写入当前时间时,应当使用系统提供的函数,如SYSDATE,而不是硬编码具体的日期或时间字符串。 - **示例**: ```sql INSERT INTO LOG (ACTION_TIME) VALUES (SYSDATE); ``` #### 三、PL/SQL...
PL/SQL程序在语法上不区分大小写,但字符串数据是区分大小写的。 接下来,我们探讨PL/SQL程序的结构。PL/SQL程序由声明部分、执行部分和异常处理部分组成。声明部分用于定义变量、类型、游标以及局部存储过程和函数...
4. **写入文件**:遍历查询结果,逐行将数据写入TXT文件中,同时处理分隔符以及字符串格式化问题。 5. **关闭资源**:最后关闭文件句柄及游标,释放资源。 #### 三、关键代码解读 ##### 1. 变量定义与初始化 ```...
--字符串根据特定分隔符分来 --Select UTL_INet.f_SplitString( 'A,B,C', xx, ',' ) From dual; Function f_SplitString( as_SourStr in out Clob, --输入字符串A,B,C as_Separator in VarChar2 ...
若有多个列,每个列名独立一行,并相对于`SELECT`向右缩进8个空格(C#中的SQL字符串无需缩进)。 - `FROM`子句中的表名或联接条件也应独立一行。 - 使用`WHERE`子句时,条件应逐一列出,每个条件占一行,复杂的...
在VC++中实现词法分析器,开发者通常会使用标准模板库(STL)和正则表达式库来处理字符串和模式匹配。此外,他们可能还会用到C++的流(Stream)库来读取源代码文件。为了构建词法分析器,开发者需要定义一套规则,即...
- 只有选项(3)符合这一要求,即字符串类型的输入参数、数字类型的输入输出参数以及字符串类型的输出参数。 #### 十七、Oracle游标更新 **题目**: 在Oracle中,当需要使用显式游标更新或删除游标中的行时,声明游标...
4. **字符串处理**:COBOL的STRING和INSPECT语句提供了丰富的字符串操作功能。 三、COBOL的实际应用 1. **商业应用**:COBOL常用于处理日常的商业事务,如账单计算、库存管理等。 2. **数据库交互**:虽然COBOL...
SQL*Plus是Oracle数据库系统提供的一个命令行工具,它允许用户交互式地执行SQL语句和PL/SQL块。这篇博客文章可能详细介绍了如何在SQL*Plus环境中将查询结果直接输出到文本文件。 在SQL*Plus中,我们可以利用重定向...
在命令行环境下,输入sqlplus加上用户名/密码@连接字符串即可启动,退出则使用EXIT命令。对于初学者来说,了解这些基础操作是至关重要的。 接着,SQL*Plus提供了丰富的命令来增强SQL的执行。例如,SET命令用于配置...
我们可以创建一个表值函数,将输入的逗号分隔字符串转换为一个包含多个行的结果集,每行代表一个商品ID。这样,我们就可以在存储过程中通过查询这个表值函数返回的结果来处理每个商品ID。 以下是一个可能的表值函数...
3. 变量和类型:支持多种数据类型,如数字、字符串、日期等,以及用户自定义数据类型。 4. 条件语句和循环结构:包括IF、CASE、WHILE、FOR等控制结构,实现条件判断和循环。 5. 游标:用于逐行处理查询结果,便于在...
2. **字符型**:VARCHAR2 用于存储变长的字符串,CHAR 用于存储定长的字符串。 3. **本地字符型**:NCHAR 和 NVARCHAR2 用于存储 Unicode 字符串。 4. **LOB 类型**:用于存储大型对象数据,如 BLOB(二进制数据)...
`C[HANGE]`命令用于修改SQLBUFFER中的当前行,替换第一个出现的字符串。 #### 15\. 编辑SQL语句 `EDI[T]`命令允许直接编辑SQLBUFFER中的SQL语句。 #### 16\. 查看SQLBUFFER `L[IST]`命令用于查看SQLBUFFER中的SQL...