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