我是SQL的新手,因此我对它的功能并不十分熟悉
所以这是我的问题。
我的下表包含> 100.000公司(让我们称之为'comp'):
id | title | name ----+---------------------+-------------- 1 | XYZ | xyz ----+---------------------+-------------- 2 | Smarts | smarts ----+---------------------+-------------- 3 | XYZ LTD | xyzltd ----+---------------------+-------------- 4 | Outsmarts | outsmarts ----+---------------------+-------------- 5 | XYZ Entertainment | xyzentertainment ----+---------------------+-------------- 6 | Smarts Entertainment| smartsentertainment
其中'title'是公司名称,'name'是相同的标题,但是没有空格。 有没有办法找到所有具有相似头衔的公司(使用'title'或'name')?所以,基本上,我想收到:
id | title | name ----+---------------------+-------------- 1 | XYZ | xyz ----+---------------------+-------------- 3 | XYZ LTD | xyzltd ----+---------------------+-------------- 5 | XYZ Entertainment | xyzentertainment ----+---------------------+-------------- 2 | Smarts | smarts ----+---------------------+-------------- 6 | Smarts Entertainment| smartsentertainment
相似我的意思是:
1)'XYZ','XYZ LTD'和'XYZ Entertainment'
2)'智能'和'智能娱乐'
但'XYZ Entertainment'与'Smart Entertainment'并不相似,'Smart'与'Outsmarts'不相似。
我尝试了这个并且它不起作用:
final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID };
Cursor imagecursor = getApplicationContext().getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
null, null);
by'not not working'我的意思是说7分钟后它仍然没有给我任何结果。我想,我完全搞砸了 是否有可能找回这些相似之处?
答案 0 :(得分:2)
您可以尝试Levenshtein distance函数,该函数为您提供从第一个参数获得第二个的编辑次数:
SELECT levenshtein(c1.name, c2.name) AS sim, 0c1.name, c2.name
FROM comp AS c1 JOIN comp AS c2 ON c1.name != c2.name ORDER BY sim DESC;