小编典典

一列中的差异数

sql

我想检索一列,每一行中的字母有多少不同。例如

如果您有一个值“ 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

在这种情况和上下文中,“测试”和“休息”之间没有区别。


阅读 164

收藏
2021-04-15

共1个答案

小编典典

我认为您正在寻找的是一种衡量编辑差异的方法,而不是仅仅计算前缀相似度,而前缀相似度有一些通用算法。Levenshtein的方法是我以前使用过的方法,并且已经将其实现为TSQL函数。对此问题的答案提出了TSQL中的几个实现,您也许可以按原样使用它们。

(尽管要花一些时间测试代码并理解方法,而不是仅仅复制代码并使用它,以便在出现问题时可以理解输出-否则可能会产生一些技术债务,您必须偿还晚点回来)

究竟要使用哪种距离计算方法将取决于您要如何计算某些事物,例如,您将替代算为一次更改还是将删除和插入算为计数,并且如果字符串足够长,那么您是否想要考虑子串的移动,等等。

2021-04-15