拆分字符串函数:

--拆分字符串函数:
--定义字符串类型的table
create or replace type type_return_str is table of varchar2(4000);
--创建拆分字符串函数
create or replace function orcl_split_str(p_string varchar2, --待拆分字符串
                                          p_fh     varchar2  --拆分符号
                                          ) return type_return_str
  pipelined as
  v_length     number := length(p_string);
  v_del_length number := length(p_fh);
  v_start      number := 1;
  v_index      number;
begin
  while (v_start <= v_length) loop
    v_index := instr(p_string, p_fh, v_start);
    if v_index = 0 then
      pipe row(substr(p_string, v_start));
      v_start := v_length + v_del_length;
    else
      pipe row(substr(p_string, v_start, v_index - v_start));
      v_start := v_index + v_del_length;
    end if;
  end loop;
  return;
end orcl_split_str;
/
--使用函数
select column_value from table(orcl_split_str('sd,weg,kjyu,gfhd', ','));

--使用场景:
select * from table t where t.col in(select column_value from table(orcl_split_str('sd,weg,kjyu,gfhd', ',')));
--统计条数
select a.*,count(a.caml_cli_num) over() as 统计条数 from table a where a.xx = 'xxxxxx';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PL/SQL 拆分字符串函数是一种用于将一个字符串分割成多个子字符串函数。该函数在 PL/SQL 编程中非常常见,可以在处理字符串的时候非常有用。 以下是一个示例的 PL/SQL 拆分字符串函数的实现: ``` CREATE OR REPLACE FUNCTION split_string(p_string IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN SYS.ODCIVARCHAR2LIST PIPELINED AS v_start_pos NUMBER := 1; v_end_pos NUMBER; BEGIN LOOP v_end_pos := INSTR(p_string, p_delimiter, v_start_pos); IF v_end_pos > 0 THEN PIPE ROW(SUBSTR(p_string, v_start_pos, v_end_pos - v_start_pos)); v_start_pos := v_end_pos + 1; ELSE PIPE ROW(SUBSTR(p_string, v_start_pos)); EXIT; END IF; END LOOP; RETURN; END; / ``` 这个函数接受两个参数:要拆分字符串和分隔符。函数使用循环和 INSTR 函数来找到每个子字符串的起始位置和结束位置,并使用 SUBSTR 函数提取子字符串。每个子字符串都通过 PIPE ROW 语句返回给调用程序。 下面是一个使用该函数的示例: ``` DECLARE v_string VARCHAR2(100) := 'Hello,World,PL/SQL'; BEGIN FOR rec IN (SELECT COLUMN_VALUE FROM TABLE(split_string(v_string, ','))) LOOP DBMS_OUTPUT.PUT_LINE(rec.COLUMN_VALUE); END LOOP; END; ``` 这个示例将字符串 'Hello,World,PL/SQL' 拆分成三个子字符串,并使用循环逐个打印每个子字符串。结果将会输出: ``` Hello World PL/SQL ``` 这就是一个简单的示例的 PL/SQL 拆分字符串函数的实现和使用,它可以大大简化处理字符串的任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值