达梦对Mysql等价替换得函数

达梦关键字冲突

关键字需要大写并且加双引号

达梦和mysql等价替换

instr和find_in_set的区别

<1>. find_in_set: 用来比较是不是包含

<2>. in: 用来比较是不是相等

  • 自定义find_in_set函数
CREATE 
	OR REPLACE FUNCTION FIND_IN_SET ( piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',' ) RETURN NUMBER IS l_idx number := 0;-- 用于计算piv_str2中分隔符的位置
str varchar2 ( 500 );-- 根据分隔符截取的子字符串
piv_str varchar2 ( 500 ) := piv_str2;-- 将piv_str2赋值给piv_str
res number := 0;-- 返回结果
loopIndex number := 0;
BEGIN-- 如果piv_str中没有分割符,直接判断piv_str1和piv_str是否相等,相等 res=1
	IF
		instr( piv_str, p_sep, 1 ) = 0 THEN
		IF
			piv_str = piv_str1 THEN
				res := 1;
			
		END IF;
		ELSE -- 循环按分隔符截取piv_str
		LOOP
				l_idx := instr( piv_str, p_sep );
			loopIndex := loopIndex + 1;-- 当piv_str中还有分隔符时
			IF
				l_idx > 0 THEN-- 截取第一个分隔符前的字段str
					str := substr( piv_str, 1, l_idx - 1 );-- 判断 str 和piv_str1 是否相等,相等 res=1 并结束循环判断
				IF
					str = piv_str1 THEN
						res := loopIndex;
					EXIT;
					
				END IF;
				piv_str := substr(
					piv_str,
				l_idx + length( p_sep ));
				ELSE -- 当截取后的piv_str 中不存在分割符时,判断piv_str和piv_str1是否相等,相等 res=1
				IF
					piv_str = piv_str1 THEN
						res := loopIndex;
					
				END IF;-- 无论最后是否相等,都跳出循环
				EXIT;
				
			END IF;
			
		END LOOP;-- 结束循环
		
	END IF;-- 返回res
	RETURN res;

END FIND_IN_SET;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaErJing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值