字符串重复值过滤

-- ========================================
-- Author:<Oliver QIN>
-- Date  :<2016/01/13>
-- Desc  :<过滤重复字符>
-- ========================================
--类型一:
IF OBJECT_ID(‘DBO.DISTINCT_STR‘) IS NOT NULL
DROP FUNCTION DBO.DISTINCT_STR
GO
CREATE FUNCTION DBO.DISTINCT_STR(@str NVARCHAR(100),@SPLIT VARCHAR(50))
RETURNS VARCHAR(100)
AS
BEGIN
---------------------------------------如果输入的字符则返回空值
    IF @str IS NULL RETURN(NULL)
    DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)
    IF LEFT(@str,1)<>@SPLIT
    SET @str = @SPLIT+@str
    IF RIGHT(@str,1)<>@SPLIT
    SET @str = @str+@SPLIT
    WHILE CHARINDEX(@SPLIT,@str)>0 AND LEN(@str)<>1
        BEGIN
        SET @INDEX = CHARINDEX(@SPLIT,@str)
        SET @TEMP = LEFT(@str,CHARINDEX(@SPLIT,@str,@INDEX+LEN(@SPLIT)))
        IF @NEW IS NULL
        SET @NEW = ISNULL(@NEW,‘‘)+@TEMP
        ELSE
        SET @NEW = ISNULL(@NEW,‘‘)+REPLACE(@TEMP,@SPLIT,‘‘)+@SPLIT
        WHILE CHARINDEX(@TEMP,@str)>0
        BEGIN
        SET @str=STUFF(@str,CHARINDEX(@TEMP,@str)+LEN(@SPLIT),CHARINDEX(@SPLIT,@str,CHARINDEX(@TEMP,@str)+LEN(@SPLIT))-CHARINDEX(@TEMP,@str),‘‘)
        END
    END
       RETURN RIGHT(LEFT(@NEW,LEN(@NEW)-1),LEN(LEFT(@NEW,LEN(@NEW)-1))-1)
END
GO
PRINT DBO.DISTINCT_STR(‘张三,A,B,C,CB,张三,C,‘,‘,‘)

-------------------------------------------------
----类型二:
IF OBJECT_ID(‘DBO.DISTINCT_STR2‘) IS NOT NULL
DROP FUNCTION DBO.DISTINCT_STR2
GO
CREATE FUNCTION DBO.DISTINCT_STR2(@S varchar(8000))
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @NEW VARCHAR(50),@INDEX INT,@TEMP VARCHAR(50)
WHILE LEN(@S)>0
BEGIN
SET @NEW=ISNULL(@NEW,‘‘)+LEFT(@S,1)
SET @S=REPLACE(@S,LEFT(@S,1),‘‘)
END
RETURN @NEW
END
GO
SELECT DBO.DISTINCT_STR2(‘AABCCD‘)
--ABCD
GO

--------------------------------------------------------------------
--获取字符串中指定的字符
IF OBJECT_ID(‘DBO.SPLIT_STR‘) IS NOT NULL
DROP FUNCTION DBO.SPLIT_STR
GO
CREATE FUNCTION DBO.SPLIT_STR(
@S varchar(8000),      --包含多个数据项的字符串
@INDEX int,             --要获取的数据项的位置
@SPLIT varchar(10)     --数据分隔符
)
RETURNS VARCHAR(100)
AS
BEGIN
IF @S IS NULL RETURN(NULL)
DECLARE @SPLITLEN int
SELECT @SPLITLEN=LEN(@SPLIT+‘A‘)-2
WHILE @INDEX>1 AND CHARINDEX(@SPLIT,@S+@SPLIT)>0
SELECT @INDEX=@INDEX-1,@S=STUFF(@S,1,CHARINDEX(@SPLIT,@S+@SPLIT)+@SPLITLEN,‘‘)
RETURN(ISNULL(LEFT(@S,CHARINDEX(@SPLIT,@S+@SPLIT)-1),‘‘))
END
GO
PRINT DBO.SPLIT_STR(‘AA|BB|CC‘,2,‘|‘)
--
GO
时间: 2024-10-05 23:19:48

字符串重复值过滤的相关文章

ArrayList去除集合中字符串的重复值,只能在本集合内操作

/* * 需求:ArrayList去除集合中字符串的重复值,只能在本集合内操作 * * 分析: * 1.创建一个集合对象 * 2.添加多个字符串元素 * 3.用选择排序方法去比较 * A:如有相同的,则删除此元素 * B:没有,则保留 * 4.遍历输出 新集合 */ package com.ma.arraylist; import java.util.ArrayList; import java.util.Iterator; /** * ArrayList去除集合中字符串的重复值,只能在本集合内

【去除集合中字符串的重复值-2】

package com.yjf.esupplier.common.test; import java.util.ArrayList; import java.util.Iterator; /** * @author shusheng * @description 去除集合中字符串的重复值(字符串的内容相同) * @Email [email protected] * @date 2018/12/12 16:55 */ public class ArrayListDemo1 { public sta

【去除集合中字符串的重复值-1】

package com.yjf.esupplier.common.test; import java.util.ArrayList; import java.util.Iterator; /** * @author shusheng * @description 去除集合中字符串的重复值(字符串的内容相同) * @Email [email protected] * @date 2018/12/12 16:24 */ public class ArrayListDemo { /** * Array

[Elasticsearch] 关于字段重复值的常用查询和操作总结

1. 取得某个索引中某个字段中的所有出现过的值 这种操作类似于使用SQL的SELECT UNIQUE语句.当需要获取某个字段上的所有可用值时,可以使用terms聚合查询完成: GET /index_streets/_search?search_type=count { "aggs": { "street_values": { "terms": { "field": "name.raw", "siz

PHP去掉数组重复值二种方法实例

PHP两种去掉数组重复值的方法,分别使用foreach方法和array_unique方法. 去除一个数组中的重复值,可以使用foreach方法,也可以使用array_unique方法. <?php $arrF = array(); $arrS = array(); $intTotal = 100; $intRand = 10; for($i=0; $i < $intTotal; $i++) { $arrF[] = rand(1, $intRand); $arrS[] = rand(1, $in

js去除数组中的重复值

hasOwnProperty(property) 方法 JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性. 使用方法: object.hasOwnProperty(proName) 其中参数object是必选项.一个对象的实例.proName是必选项.一个属性名称的字符串值. 如果 object 具有指定名称的属性,那么JavaScript中hasOwnProperty函数方法返回 true:反之则返回 false.此方法无法检查该对

华为上机练习题--重复字符过滤

题目: 请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串"abacacde"过滤结果为"abcde". 示例 输入:"deefd"        输出:"def" 输入:"afafafaf"     输出:"af" 输入:"pppppppp"     输出:"p" 分析: 看到这种类似的相同字符过滤,使

数组去掉重复值

1.一维数组 array_unique(); 2.二维数组 //todo 二维数组去掉重复值class array_table { function array_unique_fb($array2D) { foreach ($array2D as $v) { $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串 $temp[] = $v; } $temp = array_unique($temp); //去掉重复的字符串,也就是重

PHP如何去掉多维数组的重复值

1.定义函数 function array_unique_new($arr){ $t = array_map('serialize', $arr);//利用serialize()方法将数组转换为以字符串形式的一维数组 $t = array_unique($t);//去掉重复值 $new_arr = array_map('unserialize', $t);//然后将刚组建的一维数组转回为php值 return $new_arr; } 2.定义数组 $arr = array(array('sup_