我正在寻找一个包含搜索的文本的db2函数。目前我正在针对以下数据运行以下查询....
SELECT distinct
s.search_id,
s.search_heading,
s.search_url
FROM repman.search s, repman.search_tags st
WHERE s.search_id = st.search_id
AND ( UPPER(s.search_heading) LIKE (cast('%REPORT%' AS VARGRAPHIC(32)))
OR (UPPER(st.search_tag) LIKE cast('%REPORT%' AS VARGRAPHIC(32)))
)
ORDER BY s.search_heading;
返回......
但是,如果我将搜索文本更改为%REPORTS%而不是%REPORT%(我需要这样做),那么类似搜索不起作用,我得到的结果为零。
我读了一个使用名为CONTAINS的函数的链接,如下所示,但在尝试使用该函数时出现错误。
SELECT distinct
s.search_id,
s.search_heading,
s.search_url
FROM repman.search s, repman.search_tags st
WHERE s.search_id = st.search_id
AND CONTAINS(s.search_heading, 'REPORTS') = 1
anynoe有什么建议吗?我在db2版本DB2 / LINUXPPC 9.1.6上。
由于
答案 0 :(得分:1)
要在字符串中查找模式,可以使用正则表达式。从DB2 v9开始,它们是内置的DB2 with xQuery。还有其他方法可以做到这一点。我在我的博客中写了article(用西班牙语,你可以翻译)关于DB2中的正则表达式。
xmlcast(xmlquery('fn:matches(\$TEXT,''^[A-Za-z 0-9]*$'')')