我想检索一列,每一行中的字母有多少不同。例如
如果您有一个值“ test”,而另一行有一个值“ testing”,则“ test”和“ testing”之间的区别是4个字母。该列的数据将为值4
I have reflected about it and I don't know where to begin id || value || category || differences -------------------------------------------------- 1 || test || 1 || 4 2 || testing || 1 || null 11 || candy || 2 || -3 12 || ca || 2 || null
在这种情况和上下文中,“测试”和“休息”之间没有区别。
我认为您正在寻找的是一种衡量编辑差异的方法,而不是仅仅计算前缀相似度,而前缀相似度有一些通用算法。Levenshtein的方法是我以前使用过的方法,并且已经将其实现为TSQL函数。对此问题的答案提出了TSQL中的几个实现,您也许可以按原样使用它们。
(尽管要花一些时间测试代码并理解方法,而不是仅仅复制代码并使用它,以便在出现问题时可以理解输出-否则可能会产生一些技术债务,您必须偿还晚点回来)
究竟要使用哪种距离计算方法将取决于您要如何计算某些事物,例如,您将替代算为一次更改还是将删除和插入算为计数,并且如果字符串足够长,那么您是否想要考虑子串的移动,等等。