sql server 相似性對比

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   ar   div   cti   

轉自:http://www.dotblogs.com.tw/rachen/archive/2008/10/07/5611.aspx

 

 

函數一.產生 Like 比對用字串

create function fn_get_fuzzy_str( @instr nvarchar(256) )returns nvarchar(513)as begin    /*依據傳入字串補上%符號*/    /*    declare @instr nvarchar(256);    set @instr = N‘樹林國民小學‘; */    declare @outstr nvarchar(513)        if isnull(@instr,‘‘) = ‘‘ begin  set @outstr = ‘‘;    end else begin  declare @i int;  set @i = 1;      set @outstr = ‘%‘;  while @i <= len(@instr) begin      set @outstr = @outstr + substring(@instr,@i,1) + ‘%‘;      set @i = @i + 1;  end    end    return @outstr;end

 

函數二.查詢函數

create function fn_str_fuzzy_qry( @src_str nvarchar(256) , @match_str nvarchar(256) , @setp int  )returns intas begin    /*字串相似性比對 結果直越大相似性越高*/    /*    declare @src_str nvarchar(256); --比對來源    declare @match_str nvarchar(256); --比對字串    declare @setp int;    --每次步減幾個字    */    declare @fuzzy_str nvarchar(513);    declare @like_str  nvarchar(513);    set @fuzzy_str = dbo.fn_get_fuzzy_str(@match_str);    return case  when @src_str like @fuzzy_str then      4000 + 1000 - len(@src_str)  when ( len(@fuzzy_str) - @setp*2*1 >= 5 ) and @src_str like left(@fuzzy_str,len(@fuzzy_str) - @setp*2*1) then      3000 + 1000 - len(@src_str)  when ( len(@fuzzy_str) - @setp*2*2 >= 5 ) and @src_str like left(@fuzzy_str,len(@fuzzy_str) - @setp*2*2) then      2000 + 1000 - len(@src_str)  when ( len(@fuzzy_str) - @setp*2*3 >= 5 ) and @src_str like left(@fuzzy_str,len(@fuzzy_str) - @setp*2*3) then      1000 + 1000 - len(@src_str)  else 0    endend

 

應用方式

select school_name , ......from bas_infowhere    dbo.fn_str_fuzzy_qry(school_name,N‘樹林國小‘,1) > 0order by dbo.fn_str_fuzzy_qry(school_name,N‘樹林國小‘,1) desc

 

 

sql server 相似性對比

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.