Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何匹配另一列中部分包含的列?_Sql_String_Db2 - Fatal编程技术网

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

Sql 如何匹配另一列中部分包含的列?,sql,string,db2,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(),但运气不太好:

我有两个专栏,例如:

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;
我以前做过这样的工作,
col2
col1
的值开始,即

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

但事实似乎是,
col1
的值可以出现在
col2
的任何位置,从而使
locate()
偏离轨道

你的逻辑是正确的。只需修正比较:

select col2
from mytable
where locate(col1, col2) >= 1;
或者,您也可以使用类似的

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

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

where position(col1  in col2 ) > 0
或使用:

where replace(col2 ,col1 , '') <> col2
其中替换(col2,col1,”)col2

Hi Gordon谢谢-唯一的问题是
col1
的susbtring似乎满足
col2
中的搜索条件。必须允许
col2
中包含
col
整个值的on值。不幸的是,由于权限问题,我无法测试您的第二个建议。@Gordon是对的-因为LOCATE函数返回起始位置-您确定您已按照他的建议将“=”更改为“>=”?显示的“先前有此工作”的结果集与“col2以col1的值开始”相矛盾;i、 e.在最初发布后约2小时内等待任何编辑/更正。FWiW谓词
position(col1在col2中)>0
作为已经提供的
locate(col1,col2)>=1的有效等价物,对于某些人来说,对于预期效果来说可能更明显。此外,FWiW,如果没有DDL,一些建议可能与实际需求不符,因为对实际DDL做出了错误的假设;e、 RTRIM可以与LIKE谓词一起使用,因为CHAR vs VARCHARIt不是一个结果集,而是我的尝试所处理的MWE