Oracle SQL自定义通配符
我试图找到与某个指纹匹配的所有字符,但Oracle的通配符并不十分精确 那个指纹应该是:像“%”逃逸“\”这样的符号在哪里 在什么之前不重要(通配符百分比)Oracle SQL自定义通配符,sql,regex,oracle,Sql,Regex,Oracle,我试图找到与某个指纹匹配的所有字符,但Oracle的通配符并不十分精确 那个指纹应该是:像“%”逃逸“\”这样的符号在哪里 在什么之前不重要(通配符百分比) 接下来是一个下划线(用“\”转义) 然后是四个数字(#) 最后是一个字符a-Z(@) 我发现了一些使用translate函数的东西,但我一直无法使它工作。现在我正在研究正则表达式,但我以前从未使用过它们。我试图了解它们是什么,以及它们如何解决我的问题。听起来你想使用正则表达式,而不是类似的。您的“指纹”似乎是由正则表达式[\u][:digi
接下来是一个下划线(用“\”转义)
然后是四个数字(#)
最后是一个字符a-Z(@)
我发现了一些使用translate函数的东西,但我一直无法使它工作。现在我正在研究正则表达式,但我以前从未使用过它们。我试图了解它们是什么,以及它们如何解决我的问题。听起来你想使用正则表达式,而不是类似的。您的“指纹”似乎是由正则表达式
[\u][:digit:][4}[A-Z]
捕获的,因此您可以使用regexp\u instr
确定指纹是否存在(以及它在字符串中的位置)。在本例中,字符串“_1234B”是第一个字符串中的指纹,从位置7开始
SQL> ed
Wrote file afiedt.buf
1 with x as (
2 select 'sb1234_1234Bdelta' str from dual union all
3 select 'no match' from dual
4 )
5 select str,
6 regexp_instr( str, '[_][[:digit:]]{4}[A-Z]' )
7 from x
8* where regexp_instr( str, '[_][[:digit:]]{4}[A-Z]' ) > 0
SQL> /
STR REGEXP_INSTR(STR,'[_][[:DIGIT:]]{4}[A-Z]')
----------------- ------------------------------------------
sb1234_1234Bdelta 7
也可以在where子句中使用
REGEXP_LIKE
条件,而不是REGEXP_INSTR
函数。