2016-09-08 14 views
-2

我试图从Oracle表的列中读取子字符串。使用Oracle regexp查找具有确切长度的SUBSTRING

例如, 我的数据是 “感谢您注册我们,您的注册号码:ABC34252确认您的可用性。” 现在我想要一个将检索ABC34252的查询。此注册号码的大小是固定的,但问题是完整的短信因不同情况而异。

请帮助

+1

你应该存储ABC34252分别在另一列。并将其添加到消息运行时。 – jarlh

+0

@jarlh:这就是我要问的,这些字符串是从第三方获取并存储在表中的。为了将ABC34252存储在单独的列中,我问了这个问题。 – Omkar

+0

你想实现的算法是什么?你在寻找形式为“三个大写字母后跟六个数字”的字符串吗?据推测,文本中可能有9个字符不是您要查找的数字(即“算法”是9个字符的字,但您大概不想匹配)。 –

回答

1

这将工作完整的测试message.It的大小无关会挑个字母数字字符。

案例1:字符串lenght是----

select regexp_substr('Thanksing wi no.ABC34252 Confirm your availability.','[[:alpha:]]+[[:digit:]]+') Output, 
     length('Thanksing wi no.ABC34252 Confirm your availability.') Stringlen 
from dual; 

案例2:字符串lenght不同----

select regexp_substr('Thanksingakdakjdshsak djsahdjsahdk sa o.ABC34252 Confirm your availability.','[[:alpha:]]+[[:digit:]]+') Output, 
     length('Thanksingakdakjdshsak djsahdjsahdk sa o.ABC34252 Confirm your availability.') Stringlen 
from dual; 
+0

非常感谢,确切地得到了预期的结果。 – Omkar

+0

这两个查询都是一样的。我不明白区别。 – SubhasisM

+0

检查第二列结果..你会发现区别.. – XING