在SELECT中用特殊字符替换空格

时间:2014-11-23 10:45:58

标签: sql oracle obiee

我想在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,但它给了我一个错误 “获取钻取信息时出错:”

有人可以帮我解决这个问题吗?

3 个答案:

答案 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)