我是Oracle的新手,我有一个要求从字符串解析美国街道地址,我尝试了几个选项与regexp substr,但没有给我想要的结果。解析街道地址Oracle并删除不需要的文本
这里是几个来自文本字符串的例子。
XYZ 123本身形成了鲜明的日服401
XYX 123 39 AVE NE第二FLR的n-3
XYZ 213内布拉斯加州勇气方式E-1
而且我的输出应该是:
123 SE鲜明ST
123 39 AVE NE
213内布拉斯加州的勇气方式
我至今SQL:
SELECT UPPER (
REGEXP_SUBSTR (REPLACE ('xyz 2551 38th ave ne tc 2', 'xyz '),
'((^[0-9]{1,9}+[ ]+[0-9]{1}[/]+[0-9]{1})|(^[0-9]+))'))
AS houseno,
TRIM (
UPPER (
REGEXP_SUBSTR (
REPLACE ('xyz 2551 38th ave ne tc 2', 'xyz '),
'[^0-9]+((1()st|1st)|(2()nd|2nd)|(3()rd|3rd)|([1234567890]+()th|[1234567890]+th)) +(ave(nue)?|st(reet)?|boulevard|blvd)[[:print:]]*|P(.)O(.)()+Box()[0-9]+|[a-z][[:print:]]*',
1,
1,
'i')))
AS street_addrerss,
UPPER (REPLACE ('xyz 2551 38th ave ne tc 2', 'xyz ')) AS orginal_text
FROM DUAL;
在此先感谢!
这听起来不公平。从你展示的字符串中提取地址是一个非常困难的问题 - 他们把它交给了甲骨文的新手,对于如何解决这个问题没有任何建议?你应该如何识别地址是什么以及什么是“不必要的文本”?他们是否给出了任何规则? – mathguy
要求是从字符串中提取街道地址并将这些数据加载到Oracle DB中。他们并不担心地址线2. – nissamps
我认为我的问题很容易理解,但我会再试一次。通过查看您的输入字符串,您如何知道街道地址(第1行)的开始位置以及结束位置?例如:您可以说“地址从字符串中的第一个数字开始。”很公平;这是否意味着在地址之前的垃圾中不能有任何数字?自从?好的,如果可以保证的话,那很好,很有用。那么,你如何确定地址结束和剩余的“垃圾”开始? – mathguy