我想使用正则表达式格式化特定列(varchar)中的数据。
要求是任何前缀“SAINT”或“ST。”或“STE”应替换为“ST”。应删除所有特殊字符,如“'”,“ - ”等,并删除任何后缀“COUNTY”/“CITY”。
例如,文字 ST。应将JOHN'S CITY 格式化为 ST JOHNS 或 STE ABC-STE'XYZ CITY COUNTY COUNTY 文本格式应为 ST ABCSTEXYZ CITY COUNTY 。
任何人都可以帮助..
由于
答案 0 :(得分:0)
请检查以下内容是否适合您。我测试了它,它给出了正确的结果。
create table test_stack (id number , address varchar2(4000)) ;
insert into test_stack values( 1 , 'ST. JOHN''S CITY') ;
insert into test_stack values( 2 , 'STE JOHN-ABC-/''DEF CITY COUNTY CITY') ;
select id ,
regexp_replace(regexp_replace(regexp_replace( address , '^(\S*)' , 'ST') , '(\S*)$' , '') , '([^[:blank:]a-zA-Z\d])' , '' )
from test_stack
答案 1 :(得分:0)
看起来很丑,但似乎做了这个工作
SELECT
location,
REGEXP_REPLACE(
REGEXP_REPLACE(
location,
'[^A-Z0-9 ]+|\s*(CITY|COUNTY)\s*$','',1,0,'i'),
'^(SAINT|STE) ','ST ',1,0,'i') as new_location
FROM (
select 'ST. JOHN''S CITY' as location from dual
union all
select 'SAINT JOHN''S COUNTY' as location from dual
union all
select 'STE ABC-STE''XYZ CITY COUNTY COUNTY' as address from dual
) Q
'我'添加的标志是使正则表达式不区分大小写。