我想在OBIEE
中搜索时用特殊字符替换空格示例:当我搜索“T MOBILE”时,我找到“T-MOBILE”和“T_MOBILE”等。
这是我的Select语句:
SELECT "- Customer Install At"."Cust Number" saw_0,
"- Customer Install At"."Cust Name" saw_1,
"- Customer CRI Current Install At"."Global Duns Number" saw_2,
"- Customer CRI Current Install At"."Global Duns Name" saw_3
FROM "GS Install Base"
ORDER BY saw_0, saw_1, saw_2, saw_3
我尝试在WHERE中使用REGEXP_LIKE,但它给了我一个错误 “获取钻取信息时出错:”
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
我不确定你需要这么一般。对于您的示例,您将使用LIKE运算符。
WHERE FIELDNAME LIKE 'T_MOBILE'
通配符下划线“_”将查找该位置匹配的任何字符。您可以使用的另一个通配符是“%”,它将匹配任意长度的一组字符。
答案 1 :(得分:0)
函数regexp_like也应该在这里工作:
SELECT *
FROM "GS Install Base"
WHERE REGEXP_LIKE (company_name, '^T.MOBILE$');
^ - 匹配字符串的开头
$ - 匹配其结尾
。 - 匹配除null之外的每个char
答案 2 :(得分:0)
如果你想做一些比koriander的答案更复杂的事情,那么以下内容应该有效。
您不能直接使用数据库函数(例如regexp_like),只能使用OBI函数。因此,您需要使用OBI函数EVALUATE将regexp_like函数传递回数据库。
(有很多关于EVALUATE功能的文档,甲骨文和其他人都有。)
在您尝试过滤的列上,首先需要将过滤器转换为SQL,用以下内容替换整个过滤器:
evaluate('REGEXP_LIKE(%1, ''^T.MOBILE$'', ''i'')', MyTable.MyColumn)