| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
|  |  | |||
Home -> Community -> Usenet -> c.d.o.misc -> Re: How to use LONG field in the Where clause
no.
If you want to use long (which is deprecated) then you must write a PL/SQL
function to parse out a long column into a varchar2 variable(max 32k) and
look for whatever you are seeking (e.g. 'Error' in the string).  When it
finds it it should return the first place it finds the mathcing stringe and
if it looks through the whole long and does not find it then it should
return 0. (for example)
It would look like:
select * from atc_message_log where myFunction(msg_content,'Error')>0;
It is going to be very expensive to execute.  It wil cause each and every
row in the table to be read and compared vi the plsql command.  I think a
better choice would
be to use Oracle's intermedia text engine , create an index on that column
and use the contains(  ) ans score () functions.
Jim
"Rangeshwara Reddy Kona" <konareddy_at_hotmail.com> wrote in message
news:3bf2d7cd$1_at_news.cadence.com...
> I want to use field type as Long. Still I want to query the information on
> Long to get appropriate OBJ_ID. one of my friend told that I can use
to_char
> function to do this. Can I do this with to_char.
> Thx,
> Rangesh
>
>
> "Jim Kennedy" <kennedy-family_at_home.com> wrote in message
> news:nrnI7.24206$XJ4.15027493_at_news1.sttln1.wa.home.com...
> > You can either use the intermedia text engine and create an index on the
> > field.
> > You can convert the long to a lob and use a function there. (long is
> > deprecated, does msg_content really need to be over 4000 bytes? if not
> then
> > use varchar2)
> > You can write your own pl/sql function that parses out the long in 32 K
> > chunks and looks for a particular string.
> >
> > Jim
> > "Rangeshwara Reddy Kona" <konareddy_at_hotmail.com> wrote in message
> > news:3bf1fb15_at_news.cadence.com...
> > > Hi all,
> > >
> > > Message contain date like 'Reached bad state' 'Error'
> > > I want to find the records which are having 'Error' in it.
> > > I can't use
> > > select * from atc_message_log where msg_content like '%Error%';
> > > Thanks in Advance.
> > > Rangesh
> > >
> > > SQL> desc atc_message_log;
> > >  Name                                      Null?    Type
> >
>
>  ----------------------------------------- -------- ----------------------
> > --
> > > ---
> > >
> > >  OBJ_ID                                    NOT NULL NUMBER(9)
> > >  COMP_ID                                   NOT NULL NUMBER(9)
> > >  INTEGRATION_ID                            NOT NULL VARCHAR2(300)
> > >  WORK_UNIT_ID                              NOT NULL NUMBER(9)
> > >  MSG_NBR                                   NOT NULL NUMBER(9)
> > >  TIMESTAMP                                 NOT NULL DATE
> > >  SEVERITY                                           NUMBER(5)
> > >  MSG_CONTENT                                        LONG
> > >
> > > SQL>
> > >
> > >
> > >
> > >
> >
> >
>
>
Received on Wed Nov 14 2001 - 16:47:16 CST
|  |  |