【发布时间】:2019-06-10 01:56:27
【问题描述】:
我有以下
lvc_direccion := 'BL 93 IN 4 AP 401 PABLO VI II SEC';
lvc_Inmueble := REGEXP_SUBSTR (lvc_direccion, '(CONJ|ADL|ALD|ALM|APO|ATR|CAS|CEN|CLJ|CON|ESQ|FCA|TER|URB|VRD|AG|CA|CC|CD|ED|EX|HC|IN|OF|PJ|UN|UR|ZF|C){1}.*? ((TERPLN|SUITE|AGP|ALM|CEL|MLL|PAR|POR|POS|PRJ|SEC|AD|AL|AP|BG|BL|CA|CS|DP|DS|ED|EN|ET|GJ|GS|GT|HG|LC|LM|LT|MD|MJ|MN|MZ|OF|PA|PD|PH|PL|PN|PQ|PS|PT|PW|RP|SA|SC|SD|SL|SS|ST|TO|TZ|ZN|P)|.*)$');
我需要 lvc_Inmueble 等于“IN 4 AP”,但它显示“IN 4 AP 401 PABLO VI II SEC”。
但 lvc_direccion 也可以是 'ED 4F CON Las Flores Cinco' 并且必须获得 'CON Las Flores Cinco'。
我有一个地址列表,我需要从中提取属性的类型,类型是(CONJ、ADL、ALD、ALM、APO、ATR、CAS、CEN、CLJ、CON、ESQ、FCA、 TER, URB, VRD, AG, CA, CC, CD, ED, EX, HC, IN, OF, PJ, UN, UR, ZF, C),它们通常采用以下形式'类型名称',例如' URB La Tosa' 或 'CA 34',问题是子字符串在字符串 'CRA 30 15 52 URB La Tosa AP 42' 或 'CRA 30 15 52 URB La Tosa' 或其他链中以相同的方式与不同属性类型,我使用内部类型(TERPLN,SUITE,AGP,ALM,CEL,MLL,PAR,POR,POS,PRJ,SEC,AD,AL,AP,BG,BL,CA,CS,DP,DS, ED,EN,ET,GJ,GS,GT,HG,LC,LM,LT,MD,MJ,MN,MZ,OF,PA,PD,PH,PL,PN,PQ,PS,PT,PW,RP, SA,SC,SD,SL,SS,ST,TO,TZ,ZN,P)作为停止条件,所以我提取了“URB La Tosa AP”。但问题是,在没有内部类型的情况下,我还需要链尾作为停止条件。
我需要这方面的帮助。 谢谢
【问题讨论】:
-
这里提取字符串的一般规则是什么?从你的例子中看不出来,你能解释一下吗?
标签: oracle plsql regexp-substr