• Ira, I apologize, but it appears there is at least one error in the algorithm, most likely dealing with transpositions (or I accidentally changed something important when making what I thought were cosmetic changes).

    Most importantly, I would not expect ('Yvette','Yevett'), ('Martha','Marhta'), and ('Shackleford','Shackelford') to have the 0.999999 scores they're getting.

    Additionally, ('Massey','Massie') is also scored significantly lower by your T-SQL code than by the Winkler paper below (0.8888 vs. 0.9444).

    Most other scores are either almost identical, or relatively similar.

    Jaro-Winkler output validation against a paper by William E. Winkler and Yves Thibaudeau, U.S. Census: url=http://www.census.gov/srd/papers/pdf/rr91-9.pdf

    Referenced from the U.S. National Institute of Standards and Technology: url=http://www.itl.nist.gov/div897/sqg/dads/HTML/jaroWinkler.html

    SELECT [dbo].[JaroWinkler]('shackleford','shackelford') -- expect 0.9848

    SELECT [dbo].[JaroWinkler]('cunningham','cunnigham') -- expect 0.9833

    SELECT [dbo].[JaroWinkler]('campell','campbell') -- expect 0.9792

    SELECT [dbo].[JaroWinkler]('nichleson','nichulson') -- expect 0.9630

    SELECT [dbo].[JaroWinkler]('massey','massie') -- expect 0.9444

    SELECT [dbo].[JaroWinkler]('abroms','abrams') -- expect 0.9333

    SELECT [dbo].[JaroWinkler]('galloway','calloway') -- expect 0.9167

    SELECT [dbo].[JaroWinkler]('lampley','campley') -- expect 0.9048

    SELECT [dbo].[JaroWinkler]('dixon','dickson') -- expect 0.8533

    SELECT [dbo].[JaroWinkler]('frederick','fredrick') -- expect 0.9815

    SELECT [dbo].[JaroWinkler]('michele','michelle') -- expect 0.9792

    SELECT [dbo].[JaroWinkler]('jesse','jessie') -- expect 0.9722

    SELECT [dbo].[JaroWinkler]('marhta','martha') -- expect 0.9667

    SELECT [dbo].[JaroWinkler]('jonathon','jonathan') -- expect 0.9583

    SELECT [dbo].[JaroWinkler]('julies','juluis') -- expect 0.9333

    SELECT [dbo].[JaroWinkler]('jeraldine','geraldine') -- expect 0.9246

    SELECT [dbo].[JaroWinkler]('yvette','yevett') -- expect 0.9111

    SELECT [dbo].[JaroWinkler]('tanya','tonya') -- expect 0.8933

    SELECT [dbo].[JaroWinkler]('dwayne','duane') -- expect 0.8578