如何找到两行是否相似?

时间:2014-04-25 12:34:09

标签: mysql

有没有办法在SQL中查看两行是否相似,有多少行存在?

select columna,columnb from table1 
having columna like columnb

那样的东西?匹配'%columnb%'会完美地工作,因为我知道columnb总是一个"子集" columna。

| columna        | columnb      |
---------------------------------
| www.reddit.com | reddit       | 
| www.cnn.com    | bbc          |
| www.yahoo.com  | yahoo        |

理想情况下,我喜欢这样的结果。

| count(*)       | state        |
---------------------------------
| 2              | similar      | 
| 0              | notsimilar   |

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以使用LIKE执行此操作。它看起来像这样:

SELECT State, COUNT(State)
FROM
(
SELECT varcol1, varcol2,
CASE WHEN varcol1 LIKE CONCAT('%',varcol2,'%') THEN 'similar'
ELSE 'not similar' END AS State
FROM test.test) a
GROUP BY State;

答案 1 :(得分:0)

SELECT Count(*),state
FROM
(
SELECT CASE WHEN LOCATE(columnB,ColumnA)<>0 THEN 'notsimilar' 
                 ELSE 'similar' END as state
FROM tableName
) as Z
GROUP BY state

您可以使用LOCATE()功能检查 columnB 值是否位于 columnA