比较一个值被部分掩盖时oracle中的值

kur*_*bos 2 regex sql oracle

这是我在Oracle SQL查询中尝试做的事情:

我有一个X字符长的帐号(例如:6001055555).我有一个表具有相同帐号的一部分,但大部分数字都被屏蔽(例如:600 ##########,6001 ######,600244 ####).

我试图将6001055555中传递的数字与以下值600 ##########,6001 ######,600244 ####中的一个相匹配.

在此示例中,帐号6001055555应返回6001 ######(来自上面的列表).我可以达到长度相同但不确定如何解决匹配的问题 - 我正在考虑使用REGEX表达式,但我不确定这是否是正确的路径.

Vin*_*rat 5

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

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######
Run Code Online (Sandbox Code Playgroud)

我们习惯于看到,COLUMN LIKE :var但切换条款也是有效的(:var LIKE column).