从表中选择*,其中column1 LIKE column2

时间:2016-04-13 11:30:03

标签: sql sql-server-2008

仅获取那些行,其中column1中的值包含或类似于同一表和同一行的column2中的值。

例如,如果表格看起来像这样:

enter image description here

但我只想获取column1的值与column2的一部分匹配的行,如下所示:

enter image description here 即col1如col2或col2包含col1,返回。

对于同样的情况,我生成了一个具有相似模式的列,并在where条件中使用相同的模式,如下所示:

SELECT '''%''' + cast(t.col1 AS varchar(200))+ '''%''' as MatchThis,
FROM [practice].[tables].[Temp1] t
WHERE t.col2 LIKE '''%''' + cast(t.col1 AS varchar(200))+ '''%'''

这可能有帮助,可能是因为LIKE总是采用硬编码的QUOTED值并将其与查询的所有结果行进行比较。

我也试过了CONTAINS,但这也不起作用。

现在坚持这个,还有其他出路。

1 个答案:

答案 0 :(得分:1)

这样做你想要的吗?

select t.*
from [practice].[tables].[Temp1] t
where t.col2 like '%' + col1 + '%';

您的查询相对于问题似乎过于复杂。问题是关于比较两列,因此应在WHERE子句中建议某种条件。