1

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

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

我已经尝试过 LOCATE 和 LIKE 以及 % % 和 Position 但似乎无法得到它。

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

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

3 回答 3

2

LOCATE功能应该工作:

SELECT *
FROM table_name
WHERE LOCATE(field01,field02) <> 0

您的问题表明您已经尝试过LOCATE;如果它不起作用,请解释。

是一个文档参考。

于 2013-03-10T22:36:39.043 回答
1

您可以通过LIKE以下方式使用:

SELECT *
FROM mytable
WHERE field2 LIKE '%' || field1 || '%'

SQLFiddle 演示(使用 PostgreSQL 作为 SQLFiddle 尚不支持 DB2,但此示例也应该适用于 DB2)。

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

于 2013-03-10T22:23:14.893 回答
0

效果不错,试试

SELECT * FROM TAB1 WHERE POSITION(field1,field2,CODEUNITS16)<>0

于 2013-03-15T06:05:19.417 回答