Sql帮助,函数解析表中的字符串字段,需要在where子句中筛选返回的表

Sql帮助,函数解析表中的字符串字段,需要在where子句中筛选返回的表,sql,string,function,oracle11g,jdeveloper,Sql,String,Function,Oracle11g,Jdeveloper,我需要一些帮助,我正在使用Oracle 11g 11.1.2.4和Jdeveloper 我需要在where子句中过滤从函数返回的'Type',以便不返回任何'NO_Type'的'Type' 我有一个SQL语句,如下所示: Where 'String_Finder' is a function I created to parse the field in the table. 'Log_Table' is the table I am accessing. 'Messag

我需要一些帮助,我正在使用Oracle 11g 11.1.2.4和Jdeveloper

我需要在where子句中过滤从函数返回的'Type',以便不返回任何'NO_Type'的'Type'

我有一个SQL语句,如下所示:

Where 'String_Finder' is a function I created to parse the field in the table.
      'Log_Table' is the table I am accessing.
      'Message' is the field in the table I am parsing.
SQL:

我的职能:

"String_Finder" (p_message in VARCHAR2, first_field NUMBER, second_field NUMBER) RETURN AS VARCHAR2 AS

v_posA NUMBER;
v_posB NUMBER;

BEGIN
      v_posA := INSTR(p_message, '|', 1, first_field) + 1;
      v_posB := INSTR(p_message, '|', 2, second_field)

RETURN SUBSTR(p_message, v_posA, (v_posB - v_posA));
END;
应该是:

WHERE String_Finder(Log_Table.Message, 1, 2) NOT LIKE 'NO_TYPE'

SQL只是结构化查询语言-一种被许多数据库系统使用的语言,但不是一种数据库产品。。。很多东西都是特定于供应商的-所以我们确实需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标记)…好的,我已经更新了我正在使用Oracle 11g 11.1.2.4当我这样做时,我收到一个无效的标识符。当我移动到where子句时,它不会抱怨,但是我的函数不会返回任何结果。@b那么,当您在select中使用函数时,它会返回一组您可以看到的值,包括NO_类型吗?但是当你把它放在where子句中时,它什么也不返回?好吧,我让它工作了,结果是在where子句字符串查找器(Log_Table.Message,1,2)中,不像“NO_TYPE”那样工作,所以我重新检查了我的语句,当我将其更改为:String_Finder(Log_Table.Message,1,2)时,我包含了字符串查找器(Log_Table.Message,1,2)消息“NO_TYPE”不像“NO_TYPE”那样有效。谢谢你的帮助!
WHERE String_Finder(Log_Table.Message, 1, 2) NOT LIKE 'NO_TYPE'