精华内容
下载资源
问答
  • 存储过程拆分字符串

    2017-02-08 21:01:07
    因为一些奇特的需求,需要在存储过程里面遍历字符串. SET gamei=0;SET @gamePidslength=1+(LENGTH(gamePids) - LENGTH(REPLACE(gamePids,',',''))); -- 获取字符串个数 WHILE gamei循环获取游戏ID来遍历 DO  ...

    因为一些奇特的需求,需要在存储过程里面遍历字符串.

    SET gamei=0;
    SET @gamePidslength=1+(LENGTH(gamePids) - LENGTH(REPLACE(gamePids,',',''))); -- 获取字符串个数 WHILE gamei<@gamePidslength -- 循环获取游戏ID来遍历 DO
    
    
            SET gamei=gamei+1;  
            SET _game_pid = REVERSE(SUBSTRING_INDEX(REVERSE(SUBSTRING_INDEX(gamePids,',',gamei)),',',1));  -- 获取单个PID
    
     END WHILE;

    好记性不如烂笔头以备不时之需.

    展开全文
  • Sql 存储过程拆分字符串

    千次阅读 2013-06-12 17:04:56
    set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO Create PROCEDURE [dbo].[ImportCustomer] @strTel varchar(8000), @strName varchar(8000), @strUserName varchar(50), @groupID int
    set ANSI_NULLS ON
      set QUOTED_IDENTIFIER ON
      GO
     Create PROCEDURE [dbo].[ImportCustomer]
          @strTel varchar(8000), 
         @strName varchar(8000), 
         @strUserName varchar(50),
          @groupID int
      AS
      BEGIN
          declare @count int
          declare @tempTel varchar(20) 
         declare @tempName varchar(20)
          create  table  #temp(id int IDENTITY(1,1) NOT NULL primary key,tel  varchar(20)) 
          declare  @strsql  as  varchar(8000) 
          select  @strsql=''      select  @strsql='insert  into  #temp  values  ('''+replace(@strTel,',',''');  insert  into  #temp  values  (''')+''')'
           exec  (@strsql) 
             create  table  #temp1(id int IDENTITY(1,1) NOT NULL primary key,[name]  varchar(20)) 
          declare  @strsq2  as  varchar(8000) 
          select  @strsq2=''      select  @strsq2='insert  into  #temp1  values  ('''+replace(@strName,',',''');  insert  into  #temp1  values  (''')+''')'
           exec  (@strsq2)
          select @count = count(*) from #temp
          while(@count>0) 
           BEGIN 
             select @tempTel = tel from #temp where id=@count
              select @tempName = [Name] from #temp1 where id=@count 
             insert into dbo.SendCustomer(Tel,[Name],FirstDate,EndDate,UserName)         values(@tempTel,@tempName,getdate(),getdate(),@strUserName) 
             insert into dbo.SendGroupCus(Tel,GroupID) values(@tempTel,@groupID)
              Set @count = @count-1
          END
          drop table #temp
          drop table #temp1
      END


    展开全文
  • 一、拆分多个字符串:1.创建一个object类型,这个类型有几列,定义如下: create or replace type mytypeobject as object( p_string_1 varchar(1000), p_string_2 varchar(1000)); 2.创建一个表类型,表的列是有...
    一、拆分多个字符串:
    1.创建一个object类型,这个类型有几列,定义如下:

    create or replace type mytypeobject as object
    (
    p_string_1 varchar(1000),
    p_string_2 varchar(1000) 
    )
    ;

    2.创建一个表类型,表的列是有上面的object类型

    create or replace type str_splittableTwo as table of mytypeobject;

    3.创建函数

    CREATE OR REPLACE FUNCTION splitTwostr(p_string1 IN VARCHAR2,
    p_string2 IN VARCHAR2,
    p_delimiter IN VARCHAR2)
    RETURN str_splittableTwo
    PIPELINED AS
    v_mytype mytypeobjectTwo;
    v_length1 NUMBER := LENGTH(p_string1);
    v_start1 NUMBER := 1;
    v_index1 NUMBER;
    v_length2 NUMBER := LENGTH(p_string2);
    v_start2 NUMBER := 1;
    v_index2 NUMBER;
    BEGIN
    WHILE (v_start1 <= v_length1) LOOP
    v_index1 := INSTR(p_string1, p_delimiter, v_start1);
    v_index2 := INSTR(p_string2, p_delimiter, v_start2);
    IF v_index1 = 0 THEN
    v_mytype := mytypeobjectTwo(SUBSTR(p_string1, v_start1),
    SUBSTR(p_string2, v_start2));

    PIPE ROW(v_mytype);
    v_start1 := v_length1 + 1;
    v_start2 := v_length2 + 1;
    ELSE
    v_mytype := mytypeobjectTwo(SUBSTR(p_string1,
    v_start1,
    v_index1 - v_start1),
    SUBSTR(p_string2,
    v_start2,
    v_index2 - v_start2));
    PIPE ROW(v_mytype);
    v_start1 := v_index1 + 1;
    v_start2 := v_index2 + 1;
    END IF;
    END LOOP;
    RETURN;
    END splitTwostr;

    二、拆分一个字符串

    1.只需要创建一个表类型,每行类型按需求自定义

    CREATE OR REPLACE TYPE mytypelist IS TABLE OF VARCHAR2 (4000);

     

    2.创建函数
    CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2, p_delimiter IN VARCHAR2)
      RETURN 

    mytypelist


      PIPELINED
    AS
      v_length  NUMBER := LENGTH(p_string);
      v_start  NUMBER := 1;
      v_index  NUMBER;
    BEGIN
      WHILE(v_start <= v_length)
      LOOP
        v_index := INSTR(p_string, p_delimiter, v_start);
        IF v_index = 0
        THEN
          PIPE ROW(SUBSTR(p_string, v_start));
          v_start := v_length + 1;
        ELSE
          PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
          v_start := v_index + 1;
        END IF;
      END LOOP;
      RETURN;
    END splitstr;

     

     

    调用:

    select * from table(splitstr('Hello,Cnblogs!',','));

    转载于:https://www.cnblogs.com/flyrain/archive/2011/04/18/oracle_string.html

    展开全文
  • 经常用到字符串拆分,C#里有函数直接调用,下面这个是SQL的: 1setANSI_NULLSON 2setQUOTED_IDENTIFIERON 3GO 4--============================================= 5--Author:Allen 6--Createdate:2008...

    经常用到字符串拆分,C#里有函数直接调用,下面这个是SQL的:

     1  set ANSI_NULLS ON
     2  set QUOTED_IDENTIFIER ON
     3  GO
     4  -- ============================================= 
     5 -- Author:        Allen
     6 -- Create date: 2008-6-11
     7  -- Description:    批量导入客户
     8  -- ============================================= 
     9 Create PROCEDURE [dbo].[ImportCustomer]
    10      @strTel varchar(8000), 
    11     @strName varchar(8000), 
    12     @strUserName varchar(50),
    13      @groupID int
    14  AS
    15  BEGIN
    16      declare @count int
    17      declare @tempTel varchar(20
    18     declare @tempName varchar(20)
    19      create  table  #temp(id int IDENTITY(1,1NOT NULL primary key,tel  varchar(20)) 
    20      declare  @strsql  as  varchar(8000
    21      select  @strsql=''      select  @strsql='insert  into  #temp  values  ('''+replace(@strTel,',',''');  insert  into  #temp  values  (''')+''')'
    22       exec  (@strsql
    23         create  table  #temp1(id int IDENTITY(1,1NOT NULL primary key,[name]  varchar(20)) 
    24      declare  @strsq2  as  varchar(8000
    25      select  @strsq2=''      select  @strsq2='insert  into  #temp1  values  ('''+replace(@strName,',',''');  insert  into  #temp1  values  (''')+''')'
    26       exec  (@strsq2)
    27      select @count = count(*from #temp
    28      while(@count>0
    29       BEGIN 
    30         select @tempTel = tel from #temp where id=@count
    31          select @tempName = [Name] from #temp1 where id=@count 
    32         insert into dbo.SendCustomer(Tel,[Name],FirstDate,EndDate,UserName)         values(@tempTel,@tempName,getdate(),getdate(),@strUserName
    33         insert into dbo.SendGroupCus(Tel,GroupID) values(@tempTel,@groupID)
    34          Set @count = @count-1
    35      END
    36      drop table #temp
    37      drop table #temp1
    38  END

    转载于:https://www.cnblogs.com/JasonChou/archive/2009/02/22/1396129.html

    展开全文
  • CreatePROCEDURE[dbo].[label_Add_Bat]@labelsNVARCHAR(400)--eg:N'asd,ad,asdoashdo,12313j1,asdasda,asdasd,'ASBEGINDECLARE@tempTABLE(colNVARCHAR(100))DECLARE@tlabelNVARCHAR(100)...
  • 传入一个参数假如值为1,2,3, 如何在存储过程中用,拆分得到单个值。 有的直接贴实例、谢谢!
  • 实现的结果,输入 1,2,3, 去另一表中查 输出 one,two,three 我这里就是把数据存在一个临时表中 后面输出后自己处理成 ...@inUserID VARCHAR(50),--输入的要拆分字符串用户不为空的 @inDepartID VA...
  • 存储过程如下: BEGIN DECLARE docter_id_ VARCHAR(20); DECLARE topic_id_ VARCHAR(128); DECLARE create_time_ DATETIME; DECLARE url_ VARCHAR(128); DECLARE _done INT DEFAULT 0; DECLARE cur_strs ...
  • 会传两个字符串参数都是以逗号分隔的,怎么把两个字符串参数拆分插入临时表 比如 string 字段1=‘asdc,asd,sss,eef,fef’ string 字段2=‘dssd,ddd,ee,gg,rr’ 临时表 列1 列2 asdc dssd asd ddd sss ...
  • 存储过程拆分字符串的方法

    千次阅读 2011-06-29 21:44:00
    一、程序片段:declare @tempstr varchar(100)set @tempstr=1,3,4,5,447,8,10declare @tempi intselect @tempstr=@tempstr+,select @tempi=charindex(,,@tempstr)while @tempibegin print left(@tempstr,@temp
  • 自己写的特殊拆分函数如下:create or replace function FN_SPLIT_STR_2(var_str in ...现在需要一个存储过程,将所有的记录的c3字段的坐标值都缩小3倍,写入c字段内容举例为 220.25 257,220.25 269.75,229.25...
  • DELIMITER $$ ...selectIds为需要拆分字符串,splitChar为分隔符. 拆分的结果保存在临时表Id_Result_s中. while中有insert语句,循环插入.在while前后加上start transaction和commit可以提高效率.
  • 利用mysql存储过程拆分查询出来的字符串的操作 每条数据字符串的结构是:(天天)[100];(新闻)[90];(关键)[100]…这样的结构 期待输出的样子如下: 关键字 数值 天天 100 新闻 90 ...
  • 自己写的特殊拆分函数如下:create or replace function FN_SPLIT_STR_2(var_str in ...现在需要一个存储过程,将所有的记录的c3字段的坐标值都缩小3倍,写入c字段内容举例为 220.25 257,220.25 269.75,229.25...
  • # 拆分传入的字符串,返回拆分后的新字符串  DELIMITER $$ USE `book`$$ DROP FUNCTION IF EXISTS `func_split`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `func_split`(f_string VARCHAR(1000),f_...
  • 自己写的特殊拆分函数如下: ​create or replace function FN_SPLIT_STR_2(var_str in varchar2)...现在需要一个存储过程,将所有的记录的c3字段的坐标值都缩小3倍,写入c字段 内容举例为 220.25 257,220.25 269.7...
  • 将逗号分隔的字符串,每个都单独打印出来 declare @xt varchar(max) declare @channel varchar(32) set @xt='2437fc26c8ad442e9b48aea4f90b91b0,29c17ae6463d4072a13c14b2bbdcd589,2a7ea11fe4b14c47894714d908b...
  • 存储过程截取字符串

    千次阅读 2016-09-26 08:14:34
    作用:根据指定拆分字符,对字符串进行拆分  调用:select Split from fun_Split(',','1,2,3')  */  Create function [dbo].[fun_Split]  (@Symbol varchar(100),  @SplitStr varchar...
  • SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER function [dbo].[f_split](@SourceSql varchar(max),@StrSeprate varchar(10))returns @temp table(a varchar(100))--实现split功能 的函数asbegindeclare @i ...
  • Sql拆分字符串

    2012-06-29 14:54:24
    使用sqlserver分割字符串,使用存储过程使可简化参数处理。
  • declare @strSplitString nvarchar(1000)--要拆分字符串 declare @strSplit nvarchar(10)-- 分隔符,如:逗号 set @strSplit=';' declare @location int declare @strat int declare @resultString ...
  • MYSql没有表变量,通过函数无法返回表。DELIMITER $$USE `数据库`$$DROP PROCEDURE IF EXISTS `split`$$CREATE DEFINER=`Sa_scmone`@`%` PROCEDURE `split`(IN _string VARCHAR(300))...#使用临时表存储分割后的...
  • 1.自定义方法(长度相同,是指拆分后的每个长度相同): ... /*检查字符串分割后的实际个数*/ procedure SPLIT_SIZE(fundlist varchar2, ret out varchar2) as ilen integer; flist varchar2(2048); begi...
  • 最近因为旧软件需要复活上线,发现原来的数据库中丢失了部分存储过程,导致软件代码不能正常获得数据,于是不得不重新编写存储过程,其中一个环节涉及单个参数拆分软件代码送进来的多参数问题,老实说,SQL查询语言...
  • Oracle 拆分字符串函数

    2012-10-20 14:47:00
    在将图形系统的数据保存的DCOM方式转化为数据库底层直接操作的过程中,需要保留以前的批量的插入和删除功能,这其中就会涉及到将传入的字符串进行拆分然后利用ORA 的存储过程进行批量处理。在此记录下字符串拆分函数...
  • SQL 拆分字符串

    2007-11-18 19:30:00
    问题描述:分隔字符串,大都用临时表或表变量,有时候要在存储过程里用到,又在循环里采用此种方式就会成为性能的颈瓶, 现在采用charindex函数解决这个问题。 */ -- ifobject_id(N'DivStr')isnotnull begin ...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 179
精华内容 71
关键字:

存储过程拆分字符串