Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle SQL自定义通配符_Sql_Regex_Oracle - Fatal编程技术网

Oracle SQL自定义通配符

Oracle SQL自定义通配符,sql,regex,oracle,Sql,Regex,Oracle,我试图找到与某个指纹匹配的所有字符,但Oracle的通配符并不十分精确 那个指纹应该是:像“%”逃逸“\”这样的符号在哪里 在什么之前不重要(通配符百分比) 接下来是一个下划线(用“\”转义) 然后是四个数字(#) 最后是一个字符a-Z(@) 我发现了一些使用translate函数的东西,但我一直无法使它工作。现在我正在研究正则表达式,但我以前从未使用过它们。我试图了解它们是什么,以及它们如何解决我的问题。听起来你想使用正则表达式,而不是类似的。您的“指纹”似乎是由正则表达式[\u][:digi

我试图找到与某个指纹匹配的所有字符,但Oracle的通配符并不十分精确

那个指纹应该是:像“%”逃逸“\”这样的符号在哪里

在什么之前不重要(通配符百分比)
接下来是一个下划线(用“\”转义)
然后是四个数字(#)
最后是一个字符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
函数。