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

标签 sql regex oracle

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

我有一个 X 个字符长的帐号(示例:6001055555)。我有一个表,其中包含相同帐号的一部分,但大部分号码都被屏蔽了(示例:600##########、6001######、600244####)。

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

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

最佳答案

您可以使用常规的 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######

我们习惯于看到 COLUMN LIKE :var 但切换术语也是有效的 (:var LIKE column)。

关于sql - 当一个值被部分屏蔽时比较 oracle 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22047754/

相关文章:

sql - MySQL查询订单列的初始填充

regex - Notepad++ Regex 获取以 HTML 中的字符串开头的所有完整链接

c# - 如何从 .NET 使用 Oracle?

oracle - 特定存储过程或函数的源代码

sql - MS SQL日期时间精度问题

php - sphinx 中的排序结果?

android - 我应该不断地打开()和关闭()我的 SQL 数据库还是让它保持打开状态?

javascript - 根据正则表达式搜索结果替换单词

java - 正则表达式中的 "\\p{all}"是什么意思?

java - Oracle:Java 存储过程发送 JMS 消息