Sql 查找具有精确长度的Oracle regexp的子字符串
我正在尝试从Oracle表的列中获取子字符串 例如。 我的数据是 “感谢您向我们注册,您的注册号ABC34252确认您的可用性。” 现在,我需要一个查询来检索ABC34252。此注册号的大小是固定的,但问题是完整的文本消息在不同的情况下有所不同Sql 查找具有精确长度的Oracle regexp的子字符串,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我正在尝试从Oracle表的列中获取子字符串 例如。 我的数据是 “感谢您向我们注册,您的注册号ABC34252确认您的可用性。” 现在,我需要一个查询来检索ABC34252。此注册号的大小是固定的,但问题是完整的文本消息在不同的情况下有所不同 请帮助无论完整测试消息的大小,此操作都有效。它将选择字母数字字符 案例1:字符串长度为-- 案例2:字符串长度不同-- select regexp_substr('Thanksingakdakjdshsak djsahdjsahdk sa o.ABC34
请帮助无论完整测试消息的大小,此操作都有效。它将选择字母数字字符 案例1:字符串长度为-- 案例2:字符串长度不同--
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;
您应该将ABC34252单独存储在另一列中。并将其添加到消息run-time中。@jarlh:这就是我要问的,这些字符串是从第三方获取并存储在表中的。为了将ABC34252存储在单独的列中,我问了一个问题。您想要实现什么算法?您是在寻找“三个大写字母加六个数字”形式的字符串吗?据推测,文本中可能有9个字符的单词不是您要查找的数字(即“algorithm”是一个9个字符的单词,但您可能不想匹配)。非常感谢,得到了预期的结果。两个查询都是相同的。我不明白其中的区别。
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;