zoukankan      html  css  js  c++  java
  • sqlserver相同字符只取一个

    问题是: a/a/b/b/b/b/c/c/c/c要得到的数据是a/b/c(sqlserver中某列的数据,如果出现这种情况,就是有相同的只要一个)

    USE [BooksBrothersWebOrder]
    GO
    /****** Object:  UserDefinedFunction [dbo].[FX_Split]    Script Date: 08/13/2012 13:56:28 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER FUNCTION [dbo].[FX_Split]
    (
     @SplitString varchar(200),-- 需要分隔的字符串
     @Separator varchar(2)  --分隔符哈
    )
    RETURNS varchar(800)
    AS
    BEGIN
        DECLARE @CurrentIndex int --当前索引
        DECLARE @NextIndex int --下一位索引
        DECLARE @ReturnText varchar(200)-- 返回文本值
        DECLARE @ReturnTextTotal varchar(800)  --返回一条总和字符串
        set @CurrentIndex=1 --默念当前索引表示和第一位开始
     set @ReturnTextTotal = ''
        DECLARE @Flag int
        WHILE(@CurrentIndex<=len(@SplitString))--要分隔字符串的长度  当满足条件就会跳出
      BEGIN
       SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);--得到分隔符的位置
       IF(@NextIndex=0 OR @NextIndex IS NULL) --如果是0或者空得到新索引的长度
        SELECT @NextIndex=len(@SplitString)+1;
                
       SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex); --截取返回
       SELECT @CurrentIndex=@NextIndex+1; --索引依次变化
       SELECT @Flag= [dbo].[CGF_FN_SearchChar](@ReturnTextTotal,@ReturnText)--取得函数返回值
       if(@Flag=0)--表示不包含
        set @ReturnTextTotal=@ReturnTextTotal+@ReturnText+'/' --就自动添加
       --else --表示包含
       -- set @ReturnTextTotal=@ReturnText+'/'
      END
      set @ReturnTextTotal=substring(@ReturnTextTotal,0,len(@ReturnTextTotal))
          return @ReturnTextTotal
    END

    /*
     判断一个字符串是否包含另外一个字符串
     逐字截取搜索字符串循环与待搜索字符进行比较

    */
    ALTER FUNCTION [dbo].[CGF_FN_SearchChar]
    (
     @inStr VARCHAR(500), --表示要比较的
     @fndStr VARCHAR(500) --表示要查找的
    )  
    RETURNS INT
    AS  
    BEGIN  
        DECLARE @i INT,
        @f INT,
        @c VARCHAR(1)
        SET @i = 1 --从1开始
        SET @f = LEN(@fndStr)--得么长度
       
        WHILE(@i <= @f)
        BEGIN 
            SET @c = SUBSTRING(@fndStr, @i, @i) --逐字截取搜索字符串循环与待搜索字符进行比较
            IF(CHARINDEX(@c,@inStr) > 0) --表示是否存在
            BEGIN
                RETURN 1 --存在返回1
            END
            SET @i = @i + 1 --自加上,好逐个比较
        END
        RETURN 0 --返回0表示没有
    END

  • 相关阅读:
    leetcode -- Count and Say
    leetcode -- Sudoku Solver
    leetcode -- Valid Sudoku
    leetcode -- Search Insert Position
    leetcode -- Search for a Range (TODO)
    leetcode -- Search in Rotated Sorted Array II
    leetcode -- Search in Rotated Sorted Array
    SDL多线程显示更新窗口
    SDL初始化和创建窗口
    中国天气网API接口
  • 原文地址:https://www.cnblogs.com/yzenet/p/2636329.html
Copyright © 2011-2022 走看看