Regular expressions to the rescue!
Here's a test case in case you want to try it.
Jared
------------------------
drop table regex;
create table regex (
test varchar2(20)
);
create or replace function strip_str ( data_in varchar2 )
return varchar2
is
test_str varchar2(4000);
begin
test_str := data_in;
owa_pattern.change(test_str, '\x0a', '', 'g');
owa_pattern.change(test_str, '\x0c', '', 'g');
owa_pattern.change(test_str, '\x0d', '', 'g');
return test_str;
end;
/
show error function strip_str
insert into regex values( 'carriage' || chr(13) || 'return');
insert into regex values( 'line' || chr(10) || 'feeds' || chr(10));
insert into regex values( 'form feed' || chr(12));
commit;
select test
from regex;
select strip_str(test) test
from regex
/
"Hagedorn, Linda" <[EMAIL PROTECTED]>
Sent by: [EMAIL PROTECTED]
01/18/02 03:36 PM
Please respond to ORACLE-L
To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
cc:
Subject: RE: Need idea to strip tabs (chr(9) hex 9) and carriage return
(c
I couldn't get translate to just strip off the chr(13), but was able to
using this:
update ama_log set medschoolid = trim(trailing (chr(13)) from medschoolid
) where medschoolid like '95701%' ;
update ama_log set medschoolid = trim(trailing (chr(13)) from medschoolid
) where medschoolid like '95702%' ;
Before:
'REG.AMA_LOGMEDSCHOOLID TRIM(TRAIL SUBSTR(RAWTOHEX("MED
----------------------- ---------- --------------------
REG.AMA_LOG MEDSCHOOLID 95701 39353730310D
REG.AMA_LOG MEDSCHOOLID 95701 39353730310D
REG.AMA_LOG MEDSCHOOLID 95702 39353730320D
REG.AMA_LOG MEDSCHOOLID 95704 39353730340D
After:
'REG.AMA_LOGMEDSCHOOLID TRIM(TRAIL SUBSTR(RAWTOHEX("MED
----------------------- ---------- --------------------
REG.AMA_LOG MEDSCHOOLID 95701 3935373031
REG.AMA_LOG MEDSCHOOLID 95701 3935373031
REG.AMA_LOG MEDSCHOOLID 95702 3935373032
REG.AMA_LOG MEDSCHOOLID 95704 39353730340D
-----Original Message-----
Sent: Friday, January 18, 2002 12:25 PM
To: Multiple recipients of list ORACLE-L
r(1
Linda,
I just did something like this yesterday. You will need to use the
TRANSLATE function. So you can use an SQL statement like:
update <table name>
set fld1 = translate(fld1,chr(09),'-');
Make sure you only have one weird character in the field though. I
actually and a carriage return and a new line back to back and, of course,
you can't see them. You might want to use the DUMP function to look at
what is really in the field. Good luck!
Bill Carle
AT&T
Database Administrator
816-995-3922
[EMAIL PROTECTED]
-----Original Message-----
Sent: Friday, January 18, 2002 1:57 PM
To: Multiple recipients of list ORACLE-L
Hi,
Sometime in the past, data was loaded into tables from spreadsheets and
the tabs and form feeds were included in the data. I can locate all the
bad data, and am looking for a clear method to remove only the 'bad'
character from a field, despite where it occurs. For example, you can see
09 at the end of the rawtohex column. I need to change
Canada-Albertachr(9) to 'Canada-Alberta'. The form feeds in the second
example are in a numeric field.
If anyone has had to do this, I'd appreciate knowing your method.
Thanks, Linda
Table Column Contents Rawtohex
----------------- ------------ --------------------
---------------------------------
REG.AMA_COUNTRIES COUNTRY_NAME Canada-Alberta
43616E6164612D416C62657274612009
REG.AMA_COUNTRIES COUNTRY_NAME Canada-British Colum
43616E6164612D4272697469736820436F6C756D6269612009
REG.AMA_COUNTRIES COUNTRY_NAME Canada-Manitoba
43616E6164612D4D616E69746F62612009
REG.AMA_COUNTRIES COUNTRY_NAME Canada-New Foundland
43616E6164612D4E657720466F756E646C616E642009
REG.AMA_COUNTRIES COUNTRY_NAME Canada-Nova Scotia
43616E6164612D4E6F76612053636F7469612009
REG.AMA_COUNTRIES COUNTRY_NAME Canada-Ontario
43616E6164612D4F6E746172696F2009
REG.AMA_COUNTRIES COUNTRY_NAME Canada-Quebec
43616E6164612D5175656265632009
REG.AMA_COUNTRIES COUNTRY_NAME Canada-Saskatchewan
43616E6164612D5361736B617463686577616E2009
REG.AMA_COUNTRIES COUNTRY_NAME Afghanistan 41666768616E697374616E2009
REG.AMA_COUNTRIES COUNTRY_NAME Albania 416C62616E69612009
REG.AMA_COUNTRIES COUNTRY_NAME Algeria 416C67657269612009
REG.AMA_COUNTRIES COUNTRY_NAME Algeria 416C67657269612009
REG.AMA_COUNTRIES COUNTRY_NAME Angola 416E676F6C612009
REG.AMA_COUNTRIES COUNTRY_NAME Antigua 416E74696775612009
Table Column Contents Rawtohex
----------- ----------- ---------- ------------
REG.AMA_LOG MEDSCHOOLID 84708 38343730380D
REG.AMA_LOG MEDSCHOOLID 84708 38343730380D
REG.AMA_LOG MEDSCHOOLID 84709 38343730390D
REG.AMA_LOG MEDSCHOOLID 84709 38343730390D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
REG.AMA_LOG MEDSCHOOLID 84710 38343731300D
--
Please see the official ORACLE-L FAQ: http://www.orafaq.com
--
Author:
INET: [EMAIL PROTECTED]
Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051
San Diego, California -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).