2012-02-10 49 views
1

所以我构建了一个接受单个参数的查询。该参数基本上是可能出现在列中的字符串。需要通配符的Oracle SOA查询

SELECT ID, SEARCH_STRING 
FROM SEARCH_RESULTS 
WHERE UPPER(SEARCH_STRING) LIKE UPPER('%test%'); 

上面的查询完全按照预期工作。它在表中查找并返回测试出现在搜索字符串列中的任何记录。

现在我的实际问题。在SOA中,我创建了将作为搜索值的参数。值。基本上查询结束了

SELECT ID, SEARCH_STRING 
FROM SEARCH_RESULTS 
WHERE UPPER(SEARCH_STRING) LIKE UPPER(#VALUE) 

但我失去了保持通配符的能力。我试过(%#VALUE%),('%'#VALUE'%')和('%#VALUE%')都不起作用。

谢谢大家

+2

我不熟悉SOA,但是这可能工作:'... WHERE UPPER(SEARCH_STRING)LIKE '%' || UPPER(#VALUE)||'%';' – 2012-02-10 06:02:56

+1

@JeffreyKemp:发表您的评论作为答案^^。 – Thinhbk 2012-02-10 06:36:48

+0

谢谢杰弗里连接技巧。在处理参数时,不能直接附加通配符,因为参数会自动直接为该值添加格式,因此直接在参数旁边添加%不起作用。我虽然昨天晚上做了同样的事情,今天早上第一件事就是测试它。 – Jeff 2012-02-10 16:55:23

回答

1

确定.... :)

...WHERE UPPER(SEARCH_STRING) LIKE '%'||UPPER(#VALUE)||'%'; 
+0

+1有用 – cctan 2012-02-13 09:52:13