MySQL的substring_index函数到HGDB的迁移

环境

系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.5

文档用途

MySQL中substring_index(str,delim,count)函数简介

str是要处理的字符串,delim是分隔符,count是计数。

如果count是正数,那么就是从左往右数,第N个分隔符的左边的全部内容。

相反,如果是负数,那么就是从右边开始数,第N个分隔符右边的所有内容。

例如:
在这里插入图片描述
在HGDB中暂时不兼容该函数,为了不修改应用程序的代码,需要通过自定义substring_index函数实现。

详细信息

HGDB中的解决方案:自定义substring_index函数

CREATE OR REPLACE FUNCTION substring_index(inText text,inDelim text,inCount integer) RETURNS text AS 

--return text



$$

DECLARE

tArray text[];

intArrayLen integer;

textRet text := '';

intAbsCount integer;

BEGIN



--Null CHECK

IF inText IS NULL THEN

    return NULL;

END IF;

IF inCount = 0 THEN

    return '';

END IF;



tArray := string_to_array(inText,inDelim);

intArrayLen := array_length(tArray,1);

intAbsCount := abs(inCount);



--maxlength check

IF intAbsCount >= intArrayLen THEN

    return inText;

END IF;



--else

IF inCount > 0 THEN

    textRet := tArray[1];

    FOR i IN 2..inCount LOOP

         textRet := textRet || inDelim || tArray[i];

    END LOOP;

ELSE

    textRet := tArray[intArrayLen];

    FOR i IN 1..intAbsCount - 1 LOOP

         textRet := tArray[intArrayLen - i] || inDelim || textRet;

    END LOOP;

END IF;

return textRet;



END;

$$

LANGUAGE plpgsql;

修改后的执行结果:与MySQL的结果一致
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值