使用Oracle CONTAINS子句2列

时间:2013-03-18 10:19:13

标签: sql oracle oracle10g oracle11g

如何使用CONTAINS子句从表的2列进行搜索。 例如: - 假设我有一个名为CONTACT的表。它包含FIRST_NAME,LAST_NAME,USERNAME,EMAIL等列。

现在,如果我想搜索一个字符串,使用CONTAINS子句在USERNAME列中说'ABCD',我会写:

SELECT * 
FROM CONTACT 
WHERE (CONTAINS(USERNAME, 'ABCD', 1)> 0);

它给了我想要的结果。但是如果我必须在2列上搜索字符串呢?我尝试使用: -

SELECT * 
FROM CONTACT 
WHERE (CONTAINS(USERNAME, 'ABCD', 1)> 0)
AND (CONTAINS(FIRST_NAME, 'ABCD', 1)> 0);

但它给了我一个错误。请帮帮我。

PS:根据使用CONTAINS子句的要求创建了列的索引。

2 个答案:

答案 0 :(得分:3)

您的标签不是唯一的,请尝试:

SELECT * 
FROM CONTACT 
WHERE (CONTAINS(USERNAME, 'ABCD', 1)> 0)
AND (CONTAINS(FIRST_NAME, 'ABCD', 2)> 0);

答案 1 :(得分:3)

实际上,如果您多次使用包含子句,那么您可以跳过标签:

SELECT * FROM CONTACT WHERE (CONTAINS(USERNAME, 'ABCD')> 0) AND (CONTAINS(FIRST_NAME, 'ABCD')> 0);

自动添加标签。