Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Sql 当一个值被部分屏蔽时比较oracle中的值_Sql_Regex_Oracle - Fatal编程技术网

Sql 当一个值被部分屏蔽时比较oracle中的值

Sql 当一个值被部分屏蔽时比较oracle中的值,sql,regex,oracle,Sql,Regex,Oracle,以下是我在Oracle SQL查询中尝试执行的操作: 我有一个X字符长的帐号(例如:6001055555)。我有一个表,其中有一部分账号是相同的,但大部分账号都被屏蔽了(例如:600、600244) 我正在尝试将6001055555中传递的数字与以下值之一600、600244进行匹配 在本例中,帐号6001055555应返回6001(从上面的列表中)。我可以到达长度相同但不确定如何处理匹配的点-我正在研究使用正则表达式,但不确定这是否是正确的路径。如果我的理解是rite,这就是你可能期望的 se

以下是我在Oracle SQL查询中尝试执行的操作:

我有一个X字符长的帐号(例如:6001055555)。我有一个表,其中有一部分账号是相同的,但大部分账号都被屏蔽了(例如:600、600244)

我正在尝试将6001055555中传递的数字与以下值之一600、600244进行匹配


在本例中,帐号6001055555应返回6001(从上面的列表中)。我可以到达长度相同但不确定如何处理匹配的点-我正在研究使用正则表达式,但不确定这是否是正确的路径。

如果我的理解是rite,这就是你可能期望的

select regexp_substr('6001055555',replace('600##########','#'),1) from dual;
如果您从该查询中获得任何值,您可能会得出结论,账号与屏蔽值匹配

在这种情况下,您可以使用常规比较:

SQL> WITH DATA AS (
  2     SELECT '600##########' acct FROM dual UNION ALL
  3     SELECT '6001######' acct FROM dual UNION ALL
  4     SELECT '600244####' acct FROM dual
  5  )
  6  SELECT *
  7    FROM DATA
  8   WHERE '6001055555' LIKE REPLACE (acct, '#', '_');
ACCT
-------------
6001######

我们习惯于看到
类似列:var
,但切换术语也是有效的(
:类似列:var
)。

这是有效的,但当我尝试将其用作比较值时,由于某种原因,它不起作用。所以对我来说几乎是对的。。。