首页 > 其他分享 >达梦---自定义函数 find_in_set()

达梦---自定义函数 find_in_set()

时间:2024-01-30 17:24:52浏览次数:79  
标签:set END 自定义 -- res --- place str piv

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; -- 返回结果  
      res_place      number:=0;-- 原字符串在目标字符串中的位置  
    BEGIN  
    -- 如果字段是null 则返回0  
    IF piv_str2 IS NULL THEN  
      RETURN res;  
    END IF;  
    -- 如果piv_str中没有分割符,直接判断piv_str1和piv_str是否相等,相等 res_place=1  
    IF instr(piv_str, p_sep, 1) = 0 THEN  
       IF piv_str = piv_str1 THEN  
          res_place:=1;  
          res:= res_place;  
       END IF;  
    ELSE  
     -- 循环按分隔符截取piv_str  
    LOOP  
        l_idx := instr(piv_str,p_sep);  
        --  
        res_place := res_place + 1;  
        -- 当piv_str中还有分隔符时  
          IF l_idx > 0 THEN  
          -- 截取第一个分隔符前的字段str  
             str:= substr(piv_str,1,l_idx-1);  
             -- 判断 str 和piv_str1 是否相等,相等则结束循环判断  
             IF str = piv_str1 THEN  
               res:= res_place;  
               EXIT;  
             END IF;  
            piv_str := substr(piv_str,l_idx+length(p_sep));  
          ELSE  
          -- 当截取后的piv_str 中不存在分割符时,判断piv_str和piv_str1是否相等,相等 res=res_path  
            IF piv_str = piv_str1 THEN  
               res:= res_place;  
            END IF;  
            -- 无论最后是否相等,都跳出循环  
            EXIT;  
          END IF;  
     END LOOP;  
     -- 结束循环  
     END IF;  
     -- 返回res  
     RETURN res;  
    END FIND_IN_SET;
/
commit;

 

标签:set,END,自定义,--,res,---,place,str,piv
From: https://www.cnblogs.com/sixLiu/p/17997526

相关文章

  • python之常用标准库-log
    log级别:debug(),info(),warning(),error()andcritical()5个级别,最低为debug,最高位criticallog标准输出格式:%(name)sLogger的名字%(levelno)s数字形式的日志级别%(levelname)s文本形式的日志级别%(pathname)s调用日志输出函数的模块的完整......
  • Arduino - 使用ESP32-CAM
    简介准备工作:Arduino+ESP32-CAMdemo实现:使用ESP32-CAM实现拍照和视频流Arduino+ESP32开发环境搭建官网下载Arduinohttps://www.arduino.cc/en/software(建议不要下载beta版,可能会有问题)如果官网太慢可以在这里下载[Arduino中文社区-PoweredbyDiscuz!](https://www.a......
  • 2023最新版克魔助手抓包教程(9) - 克魔助手 IOS 数据抓包
     引言在移动应用程序的开发中,了解应用程序的网络通信是至关重要的。数据抓包是一种很好的方法,可以让我们分析应用程序的网络请求和响应,了解应用程序的网络操作情况。克魔助手是一款非常强大的抓包工具,可以帮助我们在Android和iOS平台上进行数据抓包。本篇博客将介绍如何使......
  • 洛谷题单指南-暴力枚举-P2241 统计方形(数据加强版)
    原题链接:https://www.luogu.com.cn/problem/P2241题意解读:要在整个n*m区域计算正方形和长方形的个数,枚举法即可。解题思路:此题枚举的对象是矩形的高i和宽j,高的范围[1,n],宽的范围[1,m],然后计算在n*m区域内有多少个i*j,i==j即属于正方形,i!=j属于长方形。那么,问题就集中在了......
  • 【赛事报名】2024全国青少年信息素养大赛-迷宫寻宝AI竞技赛项报名正式启动!
    【赛事报名】2024全国青少年信息素养大赛-迷宫寻宝AI竞技赛项报名正式启动!AI创想家 腾讯青少年科技学习中心 2024-01-3015:43 发表于广东 全国青少年信息素养大赛 全国青少年信息素养大赛(原全国青少年电子信息智能创新大赛),是“世界机器人大会青少年机器人......
  • Arduino - Arduino/AVR/8051 和 ARM/STM32
    8051,AVR和ARM架构80518051是由Intel于1980年代初推出的一款8位单片机。它的架构基于哈佛结构(分离的程序和数据存储器),并使用8位数据总线和16位地址总线。8051内核是一个8位CISC(复杂指令集计算机)处理器,具有不同的寻址模式和指令。该内核具有四个寄存器组、两个16位计数器/定时器、一......
  • c++ - 实现环形队列
    简介队列的核心思想是FIFO(FirstInFirstOut),即先入先出。入队(新增元素)必须从队尾加入,出队(删除元素)必须从队首出去。实现1、需要实现的方法#pragmaonce#include<iostream>usingnamespacestd;#ifndefMYQUEUE_H#defineMYQUEUE_H//环形队列的实现classMyQueue{......
  • [-001-]-Python语言的GUI编程工具包之PyQt5初步认识
    一、PyQt5的QtWidgets介绍PyQt5的QtWidgets模块包含了很多类,用于创建GUI应用程序的各种控件和窗口部件。其中一些主要的类包括:QApplication:应用程序类,负责管理应用程序的控制流程和事件循环QMainWindow:主窗口类,提供了一个应用程序的主界面QWidget:窗口部件类,是所有用户界面......
  • 美赛2023C练习-做题笔记
    代码:clc;TC=ProblemCDataWordle;%数据处理noC=TC(:,1);wordC=TC(:,2);dataC=TC(:,3:11);no=cell2mat(noC);data=cell2mat(dataC);L=size(wordC);L=L(1);word=[];%原表格有错误,根据网络数据进行修正wordC{36}="clean";wordC{247}="trash";%修正endfori=1:L......
  • 无涯教程-ExpressJS - 身份验证
    为了创建身份验证系统,无涯教程需要创建一个注册页面和一个用户密码存储,以下代码创建了一个帐户并将其存储在内存中,这只是出于演示的目的;建议始终使用永久性存储(数据库或文件)来存储用户信息。varexpress=require('express');varapp=express();varbodyParser=require('body......