在SQL查询(DB2)中,如何在另一个字段中找到字段值?

在SQL查询(DB2)中,如何在另一个字段中找到字段值?,sql,db2,Sql,Db2,在SQL查询(DB2)中,如何在另一个字段中找到字段值? 例如,Field01包含零件号“1234”。Field02包含“这是我要保留的1234” 如何在Field02中查找或搜索Field01的值 我试过定位、喜欢和定位,但似乎无法找到 我可以在Field02中找到Field01,只要它在Field02的开头,但如果它是由其他字符进行的,就不能找到。 这是我为此使用的命令: CASE WHEN LEFT ( TRIM ( FIELD02), CHARACTER_LENGTH ( TR

在SQL查询(DB2)中,如何在另一个字段中找到字段值? 例如,Field01包含零件号“1234”。Field02包含“这是我要保留的1234”

如何在Field02中查找或搜索Field01的值

我试过定位、喜欢和定位,但似乎无法找到

我可以在Field02中找到Field01,只要它在Field02的开头,但如果它是由其他字符进行的,就不能找到。 这是我为此使用的命令:

CASE 
    WHEN LEFT ( TRIM ( FIELD02), CHARACTER_LENGTH ( TRIM ( FIELD01 ) ) ) =  
     TRIM ( WMCPIL ) THEN TRIM ( FIELD02) 
 ELSE '^' 
END

您可以通过以下方式使用类似的

SELECT *
FROM mytable
WHERE field2 LIKE '%' || field1 || '%'
(使用PostgreSQL作为SQLFIDLE还不支持DB2,但是这个例子也应该适用于DB2)


DB2更喜欢使用
CONCAT
连接字符串,但它也支持将标准的
|
作为同义词。

定位
函数应该可以:

SELECT *
FROM table_name
WHERE LOCATE(field01,field02) <> 0
选择*
从表\u名称
位于何处(field01,field02)0
您的问题表明您已经尝试了定位
;如果不起作用,请解释


是一个文档参考。

它工作正常,请尝试-


从选项卡1中选择*位置(字段1、字段2、代码单元16)0

您是否尝试了
包含
?编辑您的问题并显示您尝试使用
定位功能的示例
LOCATE(field01,field02)
如果找到,则应返回非零;如果未找到,则应返回零。在DB2中,当右侧表达式包含列名时,“LIKE”似乎有问题。这可能会导致比较出现问题。FWiW:我所看到的这种情况下,问题的根源通常是使用固定长度字符数据类型而不是可变长度的字段,但其目的是搜索应基于该字段的修剪或剥离值;i、 e.与“%”| | | field1 | |“%”等
不同
,通常使用“%”| | RTRIM(field1)| |“%”等
或“%”| | TRIM(field1)| |“%”等
更激进的剥离/修剪来达到预期效果