如何匹配另一列中部分包含的列?

时间:2016-07-11 15:16:41

标签: sql string db2

我有两列,例如:

col1      col2
----      ----
5qt       exception for 5qt ammended
5qt       exception for 5076 ammended
6d3       6d3 registered

我希望字符串匹配,以便col1中存在col2的值,返回col2。

所以我得到了:

exception for 5qt ammended
6d3 registered

我尝试使用locate(),但没有太多运气:

select col2 from mytable
where locate(col1,col2) = 1;

我之前有过这样的工作,其中col2col1的价值开始,即

col1        col2
----        ----
5qt         5qt ammended
5qt         5076 ammended
6d3         6d3 registered

但似乎col1的价值出现在col2的任何位置都会导致locate()抛弃。

2 个答案:

答案 0 :(得分:2)

你的逻辑没问题。只需修正比较:

select col2
from mytable
where locate(col1, col2) >= 1;

或者,您可以使用like

where col2 like '%' || col1 || '%'

答案 1 :(得分:1)

戈登工作的解决方案,您也可以使用:

where position(col1  in col2 ) > 0

或使用:

where replace(col2 ,col1 , '') <> col2