zoukankan      html  css  js  c++  java
  • 原创:sql中比较一个字符串中是否含有另一个字符串中的一个字符

    版本一:按分隔符进行比较

    算法思路:按分隔符截取搜索字符串循环与待搜索字符进行比较

    代码
    USE [Fly]
    GO
    --参数:@inStr 待搜索字串,@fndStr 搜索字串,@doc 分隔符
    --
     例:select dbo.fSearch('1,2,3,4,5,6','3,6,5,8,2',',') 返回0-不匹配,返回1-匹配(@instr中有@fndStr内容)
    --
    可以用于表搜索,如:
    --
     Select *,dbo.fSearch(str,'3,6,5,8,2',',') as 是否匹配 from 表名
    --
     @fndStr和@doc两个参数就需要你自己提供了,@inStr可以是数据表里的某个待搜索字段名

    CREATE FUNCTION CGF_FN_Search(@inStr VARCHAR(500),@fndStr VARCHAR(500),@doc VARCHAR(5))   
        
    RETURNS INT
    AS   
    BEGIN   
        
    DECLARE @i INT,@c VARCHAR(500),@fStr VARCHAR(500)
        
        
    SET @fStr = @fndStr
        
        
    WHILE(LEN(@fStr> 0)
        
    BEGIN  
            
    SET @i = Charindex(@doc@fStr)
            
    IF(@i = 0)
            
    BEGIN
                
    IF(CHARINDEX(@fStr,@inStr> 0)
                    
    RETURN 1
                
    ELSE
                    
    RETURN 0
            
    END
            
    ELSE
            
    BEGIN
                
    SET @c = SUBSTRING(@fStr,1,@i-1)
                
    IF(CHARINDEX(@c,@inStr> 0)
                    
    RETURN 1
                
    ELSE
                    
    SET @fStr = SUBSTRING(@fStr,@i+LEN(@doc),LEN(@fStr))
            
    END
        
    END
        
        
    RETURN 0
    END

     

    版本二:逐字进行比较

    算法思路:逐字截取搜索字符串循环与待搜索字符进行比较

    代码
    USE [Fly]
    GO
    /****** Object:  UserDefinedFunction [dbo].[CGF_FN_SearchChar]    Script Date: 09/03/2010 16:42:12 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE 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
        
    SET @f = LEN(@fndStr)
        
        
    WHILE(@i <= @f)
        
    BEGIN  
            
    SET @c = SUBSTRING(@fndStr@i@i)
            
    IF(CHARINDEX(@c,@inStr> 0)
            
    BEGIN
                
    RETURN 1
            
    END
            
    SET @i = @i + 1
        
    END
        
        
    RETURN 0
    END
  • 相关阅读:
    【Python】[面向对象编程] 访问限制,继承和多态
    【Python】[面向对象编程] 类和实例
    【jQuery】 jQuery上下飘动效果
    【jQuery】scroll 滚动到顶部
    【Python】[模块]使用模块,安装第三方模块
    【jQuery】Jquery.cookie()
    【Python】[高级特性]切片,迭代,列表生成式,生成器,迭代器
    【Python】[函数式编程]高阶函数,返回函数,装饰器,偏函数
    【JavaScript】 JSON
    【CSS3】 线性渐变
  • 原文地址:https://www.cnblogs.com/zxjyuan/p/1817209.html
Copyright © 2011-2022 走看看