首页 > 其他分享 >【DM】自定义存储函数(返回字符在字符串中所在位置的下标字符串)

【DM】自定义存储函数(返回字符在字符串中所在位置的下标字符串)

时间:2024-02-04 14:57:55浏览次数:36  
标签:DM strVal 自定义 strInput intValue END result 字符串 VARCHAR

一、使用while语法

-- 输入: 原字符串,查找的字符,分割字符  
-- 输出: 所在位置下标集合(用输入的分割字符分割)
CREATE OR REPLACE FUNCTION dF_strPosition(
strInput IN VARCHAR(100),
strFindinput IN VARCHAR(2),
strSplit IN VARCHAR(2))
RETURN VARCHAR(128)
 AS
    strVal   varchar(128)='';
    intValue int:=0;
BEGIN
   set strInput=rtrim(ltrim(strInput)); ---去掉左右空格
   --请注意REGEXP_INSTR 函数用法
   while REGEXP_INSTR((right(strInput,len(strInput)-intValue)),strFindinput)<>0
    LOOP
    select REGEXP_INSTR((right(strInput,len(strInput)-intValue)),strFindinput)+intValue into intValue;
    strVal :=strVal+cast(intValue as varchar(2))+strSplit;
    end loop;
    --最后截图字符串,从0位开始,截取到长度-1,为了去掉最后一个分割字符
    strVal:=SUBSTR(strVal,0,len(strVal)-1);
    return strVal;
END;

结果:
SELECT dF_strPosition('333332',3, ',')

二、使用for语法

CREATE OR REPLACE FUNCTION dF_strPosition(
 original_data VARCHAR, 
 search_number varchar, 
 delimiter     CHAR)
 RETURN VARCHAR 
AS 
 position varchar;
 result VARCHAR ;
 BEGIN
      set original_data=rtrim(ltrim(original_data)); ---去掉左右空格
      FOR position IN 1..LENGTH(original_data) 
      LOOP
          IF SUBSTRING(original_data FROM position FOR 1) = search_number THEN
              result := result || position || delimiter;
          END IF;
      END LOOP;
      IF LENGTH(result) > 0 THEN
          result := SUBSTRING(result FROM 1 FOR LENGTH(result)-1);
      END IF;
      RETURN result;
END;

结果:SELECT dF_strPosition('333332',3, ',')

 

标签:DM,strVal,自定义,strInput,intValue,END,result,字符串,VARCHAR
From: https://www.cnblogs.com/WuUranus/p/18006158

相关文章

  • 【DM】判断两个逗号分隔的字符串参数是否存在交集
     CREATEORREPLACEFUNCTIONSIGN_INTERSECTION(V_TAG1VARCHAR2,V_TAG2VARCHAR2)RETURNINTEGERISBEGINIFV_TAG1ISNULLORV_TAG2ISNULLORV_TAG1=''ORV_TAG2=''THENRETURN1;ENDIF;--去掉前缀和尾随逗号V_TAG2......
  • EDM 营销 平台有哪些?3款系统大分析
    在当今数字营销的激烈竞争中,EDM(ElectronicDirectMail)营销平台成为了企业获取客户和推广产品的重要渠道之一。随着市场需求的不断增长,各种EDM营销平台如雨后春笋般涌现,企业在选择合适的平台时往往面临诸多挑战。本文将针对EDM营销平台进行深入分析,探讨其中的3款系统,帮助企业在众多......
  • (12)动态生成菜单及绑定自定义事件
    varAddCollctMenus:ArrayOfTMenuItem;//动态菜单 procedureTForm1.Button5Click(Sender:TObject);Vari,AddCollctMenuCount:Integer;BeginAddCollctMenuCount:=Length(AddCollctMenus)-1;Fori:=0ToAddCollctMenuCountDoBeginFreeAndNil......
  • 【学习笔记】字符串
    1.KMP【模板】KMP朴素的比对是如下的:for(inti=0;i<a.size()-b.size();i++){ for(intj=0;j<b.size();j++){ if(a[i+j]!=b[j])break; if(j==b.size()-1)cout<<i<<''; }}设A串长度\(n\),B串长度\(m\),显然这么做是\(O(nm)\)的。很容易想到一个错误优化:如果失......
  • Problem P06. [算法课分治] 找到 k 个最长重复字符串
    注意是在该子字符串内每个字符的出现次数都不少于k。可以采用分治的方法,函数找一个不符合条件的字符,然后将字符串分成两个子字符串,就这样进行递归运算,每次找到符合条件的子字符串就判断一波长度,然后将最长的长度值存下来。#include<iostream>#include<bits/stdc++.h>#includ......
  • 验证回文字符串
    问题描述:给定一个非空字符串s,最多删除一个字符。判断是否能成为回文字符串。示例1:输入:"aba"输出:True示例2:输入:"abca"输出:True解释:你可以删除c字符。注意:字符串只包含从a-z的小写字母。字符串的最大长度是50000。publicbooleanvalidPalindrome(St......
  • 反转字符串中元音字母
    问题描述:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例1:输入:"hello"输出:"holle"示例2:输入:"leetcode"输出:"leotcede"classSolution{publicStringreverseVowels(Strings){if(s.length()<=1){return......
  • 反转字符串
    问题描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。你可以假设数组中的所有字符都是ASCII码表中的可打印字符。示例1:输入:["h","e"......
  • antd upload组件缩略图自定义
    antd组件的缩略图使用img标签即可实现,我们这里有一个3D文件显示2D缩略图的需求,而这个缩略图是后台从接口返回的,所以需要自定义缩略图。 这里的imageUrl就是你要的缩略图用到了官网案例的将图片转为base64,具体的方法看官网。在这里还有最最重要的一个点就是得控制它的样式,不......
  • c语言小练习——字符串长度、拷贝、拼接、比较
    /* 使用c语言知识实现下面程序: 1,实现strlen函数的功能 2,实现strcpy函数的功能 3,实现strcat函数的功能 4,实现strcmp函数的功能 不允许使用已有的str函数*/1#define_CRT_SECURE_NO_WARNINGS2#include<stdio.h>3#include<string.h>4#include<stdbool.h>5#......