有没有办法在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 |
提前致谢。
答案 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