博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL字段的相似度
阅读量:4953 次
发布时间:2019-06-12

本文共 1561 字,大约阅读时间需要 5 分钟。

---两个字段顺序相似

CREATE FUNCTION DBO.FN_Resemble_order
    (@Cloumna NVARCHAR(MAX),
     @Cloumnb NVARCHAR(MAX)
    )
RETURNS FLOAT
AS
BEGIN
    DECLARE @num FLOAT,@len int
    SET @Cloumna=ISNULL(@Cloumna,0)
    SET @Cloumnb=ISNULL(@Cloumnb,0)
    SET @len=1
    SET @num=0
    WHILE(LEN(@Cloumna)<>0 AND LEN(@CloumnB)<>0)
    BEGIN
    DECLARE @a NVARCHAR(4)
    DECLARE @b NVARCHAR(4)
        IF(LEN(@Cloumna)>=LEN(@CloumnB))
        BEGIN
            WHILE(@len<=LEN(@CloumnB))
            BEGIN
                
                SET @a=''
                SET @a=SUBSTRING(@Cloumna,@len,1)
                SET @b=''
                SET @b=SUBSTRING(@CloumnB,@len,1)
                IF(@a=@b)
                BEGIN
                SET @num=@num+1
                END
                    ELSE
                    BEGIN
                        break
                    END
            SET  @len=@len+1   
            END
        END
        ELSE IF    (LEN(@Cloumna)<LEN(@CloumnB))
        BEGIN
            WHILE(@len<=LEN(@Cloumna))
                BEGIN
                    SET @a=''
                    SET @a=SUBSTRING(@Cloumna,@len,1)
                    SET @b=''
                    SET @b=SUBSTRING(@CloumnB,@len,1)
                    IF(@a=@b)
                    BEGIN
                        SET @num=@num+1
                    END
                    ELSE
                        BEGIN
                            break
                        END
                SET  @len=@len+1   
            END
        
        END
    SET @num=@num*1.0/LEN(@Cloumna)
    BREAK
    END
    RETURN @num
END
go
----测试代码
SELECT DBO.FN_Resemble_order('ABDC456G','ABDC123G')

 

---两个字段简单相似

CREATE FUNCTION DBO.FN_Resemble
    (@Cloumna NVARCHAR(MAX),
     @Cloumnb NVARCHAR(MAX)
    )
RETURNS FLOAT
AS
BEGIN
    DECLARE @num FLOAT,@len int
    SET @Cloumna=ISNULL(@Cloumna,0)
    SET @Cloumnb=ISNULL(@Cloumnb,0)
    SET @len=1
    SET @num=0
    WHILE(LEN(@Cloumna)<>0 AND LEN(@CloumnB)<>0)
    BEGIN
        WHILE(@len<=LEN(@Cloumna))
        BEGIN
            DECLARE @a NVARCHAR(4)
            SET @a=''
            SET @a=SUBSTRING(@Cloumna,@len,1)
            IF(CHARINDEX(@a,@CloumnB)>0)
            BEGIN
            SET @num=@num+1
            END
        SET  @len=@len+1   
        END
    SET @num=@num*1.0/LEN(@Cloumna)
    BREAK
    END
    
    RETURN @num
END
----测试代码
SELECT DBO.FN_Resemble('ABDC321G','ABDC123G')

转载于:https://www.cnblogs.com/fanna/p/4777677.html

你可能感兴趣的文章
Yii2.0手册地址
查看>>
3. gulp安装和使用
查看>>
token 小记
查看>>
Android 绑定类型服务---其他注意事项
查看>>
hdu--1081--最大子矩阵和
查看>>
hdu--2848--未解决
查看>>
HDU 5943 Kingdom of Obsession 二分图的匹配
查看>>
iOS 播放GIf图, 动态效果
查看>>
poj 1703 Find them, Catch them (并查集)
查看>>
SQL Server Execute Package Utility Version 10.50.2500.0 for 64-bit
查看>>
compilation debug= true targetframework= 4.0 / configuration error
查看>>
数据结构:分块-区间众数查询
查看>>
使用四阶龙格库塔方法求解三体问题(解十二元一阶常微分方程组)
查看>>
搜索:N皇后
查看>>
BlockingQueue and BlockingDeque
查看>>
paython3-练习
查看>>
练习3:参数值传递的汇编实质
查看>>
弹出键盘时UITableview内容跟着上移,不至于被键盘挡住,导致UITableView内容显示不完...
查看>>
JS 实现触发下载内容(H5 download)
查看>>
jQuery中的编程范式
查看>>