PostgreSQL存储过程——实现截取逗号之前内容

一、效果展示

select cascadepro('北京市,西城区,西直门', 2);

结果:北京市,西直门



二、存储过程

-- 查询:select cascadepro('北京市,西城区,西直门', 2);
-- 输出:北京市,西直门

create function cascadepro(value1 text, no integer) returns character varying
    language plpgsql
as
$$
DECLARE
DECLARE
	v_value_in TEXT;
v_result TEXT := '';
i_index int4 := 0;
v_value TEXT;
BEGIN
 v_value_in:= value1;
	IF
		value1 = NULL THEN
			RETURN NULL;

	END IF;
	IF
		SUBSTR( value1, 1, 1 ) = ',' THEN
			v_value_in = SUBSTR( value1, 2 );

	END IF;
	IF
		SUBSTR( v_value_in, LENGTH ( v_value_in ), 1 ) = ',' THEN
			v_value_in = SUBSTR(
				v_value_in,
				1,
				LENGTH ( v_value_in ) - 1
			);

	END IF;
	FOR v_value IN (
		SELECT UNNEST
			(
			string_to_array( v_value_in, ',' )) AS ID
		)
		LOOP
		i_index := i_index + 1;
	IF
		i_index <= "no" THEN
		IF
			v_result = '' THEN
				v_result = v_value;
			ELSE v_result = v_result || ',' || v_value;

		END IF;
    ELSE
        EXIT;
	END IF;

END LOOP;
IF
	i_index < "no" THEN
		v_result = NULL;

END IF;
RETURN v_result;

END;
$$;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值