zoukankan      html  css  js  c++  java
  • SQL 比较中文字符串

    /*
    declare @str1 varchar(200),@str2 varchar(200)
    set @str1=N'江西省南昌市其它区高新区火炬大道809号' 
    set @str2=N'江西省南昌市其它区高新区火炬大道809号'
    
    */
    ALTER FUNCTION [dbo].[F_strcompare](@str1 nVARCHAR(200),
                                 @str2 nVARCHAR(200))
    RETURNS numeric(3,2)
    AS
    BEGIN
    declare @returnvalue numeric(3,2)
    set @returnvalue=0
    if len(@str1)=0 or LEN(@str2)=0
    begin
    	return @returnvalue
    end     
    
    /*完全相等与完全包含*/
    if @str1=@str2 or charindex(@str1,@str2)>0 or charindex(@str2,@str1)>0
    begin
    	set @returnvalue= 1.0
    	return @returnvalue 
    end
    
    DECLARE	@len   INT,	--长度
    		@min	int,
    		  @pos   INT, --累计符合个数 
    		  @currindex int,	--上次匹配位置
    		  @index	int,	--本次匹配位置
    		  @k   INT,
    		  @ret numeric(3,1),	--相似度
    		  @word	nvarchar(200),	--进行分解的字符串
    		  @strsource	nvarchar(200)	--长度较大的字符串
    		  
    select @pos=0,@index=0,@currindex=0,@k=0
    
    select @len =(
    		case when LEN(@str1)>LEN(@str2)
    			then LEN(@str1)
    			else
    				LEN(@str2)
    				end
    		),
    		@min=(
    		case when LEN(@str1)>LEN(@str2)
    			then LEN(@str2)
    			else
    				LEN(@str1)
    				end
    		)
    		,@word=(
    			case when LEN(@str1)>LEN(@str2)
    				then @str2
    				else
    					@str1
    					end
    		)
    		,@strsource=(
    			case when LEN(@str1)>LEN(@str2)
    				then @str1
    				else
    					@str2
    					end
    		)
    		
     while   @k   <  @len-1
      begin   
    		select @index=charIndex(substring(@word,@k,1),@strsource)
              if  @index >   0 and @index > @currindex
                    begin   
                        set   @pos   =   @pos+1     
                        set   @currindex=@index
                        --print @index
                    end   
              set   @k=@k+1   
      end   
      
      --SET @ret = (CAST(@pos * 100.0 / @k AS NUMERIC(3, 0)))
      SET @ret= (@pos * 1.0 / @min)
      return @ret
    End
      --select @ret,@k,@pos,@len,@min
      
      
      
      
    

      

  • 相关阅读:
    Ethical Hacking
    Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    Python Ethical Hacking
    食物链 POJ
    Wireless Network POJ
    Candies POJ
    畅通工程再续 HDU
    Jungle Roads HDU
  • 原文地址:https://www.cnblogs.com/gxivwshjj/p/3653896.html
Copyright © 2011-2022 走看看