一个数据表中有很多记录,每条记录内容大概有十多个字,想找出描述相同或相近的记录(这里相同或相近是指有80%以上的内容相同,如第1记录:500号椅子的上部把手断了,第10条记录:500号椅子的把手断了,那么可以认为这两条记录是相同的),请问如何通过sql语句实现这样的查询?

解决方案 »

  1.   

    select max(id) from table group by 记录
      

  2.   

    select max(id) from table group by 记录
      

  3.   

    很难作这样的判断,因为汉语的意思与字词的出现及排列顺序根本是没关系的,比如:
    好不?
    不好!
    都用了相同的两个字,可意思却风马牛不相及,所以即使能进行判断,也只是一些模糊的结论.
    不过你可以这样处理,比如判断前几个字相同:
    select * from tb a where exists(select 1 from tb where id <>a.id and left(col,5)=left(a.col,5))
    这样可以判断前几个字符,用right函数则可以判断后几个字符.还可以:
    select * from tb a where exists(select 1 from tb where id<>a.id and charindex(left(a.col,5),col)>0)
    这样可以判断出某行col前几个字符在其他行中存在,最好结合数据的实际情况进行类似的处理.