Sql帮助,函数解析表中的字符串字段,需要在where子句中筛选返回的表
我需要一些帮助,我正在使用Oracle 11g 11.1.2.4和Jdeveloper 我需要在where子句中过滤从函数返回的'Type',以便不返回任何'NO_Type'的'Type' 我有一个SQL语句,如下所示: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
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'