SQL在字符串中查找字串出现第N次的位置

本文介绍了一种在PostgreSQL环境下通过PL/SQL实现查找特定字符串在文本中出现次数的方法,包括代码实现和使用建议。

标准SQL没有提供解决方案,各大厂商貌似也没有提供这样的函数,只能自力更生了,

以下代码使用postgresql 的 PL/SQL语法写成,其它环境只要替换个别函数即可:

CREATE OR REPLACE FUNCTION find_string_N_time(sourceStr VARCHAR, desStr VARCHAR, appearTime INT)
RETURNS varchar as
$BODY$
DECLARE
 v_temp_source_str VARCHAR(1024);
 v_position INT := 0;
 v_pre_position INT := 0;
BEGIN
 v_temp_source_str := sourceStr;
 FOR i in 1..appearTime
  LOOP
   SELECT POSITION(desStr IN v_temp_source_str) INTO v_pre_position;
   SELECT SUBSTR(v_temp_source_str, v_position + 1) INTO v_temp_source_str;
   v_position := v_position + v_pre_position;

  END LOOP;
  RETURN v_position;


END;
$BODY$
LANGUAGE plpgsql VOLATILE

有什么更好的方法,告诉我请。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值