根据条件 oracle apex 检索数据
Retrieve data based on condition oracle apex
我有以下问题:
我想显示与指定用户具有相似名称的所有用户。
为此,我首先获取指定用户的数据并将它们存储在页面项中。
在第二步中,我创建了一个经典报告,想在这里列出所有具有相似名字的用户。
怎么说呢,比如只有这个页面item的值开头必须相同?
如果“相似性”的意思是“匹配前几个字母”,那么你
select ...
from table_of_users u
where substr(:P1_USER_NAME, 1, 3) = substr(u.user_name, 1, 3) --> match first 3 letters
但是,也许您想要考虑另一种方法并使用 UTL_MATCH
包。例如(Scott 的 EMP
table 的交叉(自身)连接):
SQL> SELECT a.ename,
2 b.ename,
3 UTL_MATCH.jaro_winkler_similarity (a.ename, b.ename) similarity
4 FROM emp a CROSS JOIN emp b
5 ORDER BY similarity DESC
6 /
ENAME ENAME SIMILARITY
---------- ---------- ----------
SMITH SMITH 100
MILLER MILLER 100
ALLEN ALLEN 100
FORD FORD 100
JAMES JAMES 100
<snip>
JAMES JONES 76
JONES JAMES 76
JAMES ADAMS 73
CLARK BLAKE 73
BLAKE CLARK 73
<snip>
SCOTT MARTIN 45
JAMES MARTIN 41
MARTIN JAMES 41
TURNER ALLEN 41
ALLEN TURNER 41
FORD JAMES 0
FORD MILLER 0
MILLER WARD 0
MILLER SCOTT 0
<snip>
在您的示例中,例如
select ...
from table_of_users u
where utl_match.jaro_winkler_similarity(:P1_USER_NAME, u.user_name) > 80; -- match more than 80%
我有以下问题: 我想显示与指定用户具有相似名称的所有用户。 为此,我首先获取指定用户的数据并将它们存储在页面项中。
在第二步中,我创建了一个经典报告,想在这里列出所有具有相似名字的用户。
怎么说呢,比如只有这个页面item的值开头必须相同?
如果“相似性”的意思是“匹配前几个字母”,那么你
select ...
from table_of_users u
where substr(:P1_USER_NAME, 1, 3) = substr(u.user_name, 1, 3) --> match first 3 letters
但是,也许您想要考虑另一种方法并使用 UTL_MATCH
包。例如(Scott 的 EMP
table 的交叉(自身)连接):
SQL> SELECT a.ename,
2 b.ename,
3 UTL_MATCH.jaro_winkler_similarity (a.ename, b.ename) similarity
4 FROM emp a CROSS JOIN emp b
5 ORDER BY similarity DESC
6 /
ENAME ENAME SIMILARITY
---------- ---------- ----------
SMITH SMITH 100
MILLER MILLER 100
ALLEN ALLEN 100
FORD FORD 100
JAMES JAMES 100
<snip>
JAMES JONES 76
JONES JAMES 76
JAMES ADAMS 73
CLARK BLAKE 73
BLAKE CLARK 73
<snip>
SCOTT MARTIN 45
JAMES MARTIN 41
MARTIN JAMES 41
TURNER ALLEN 41
ALLEN TURNER 41
FORD JAMES 0
FORD MILLER 0
MILLER WARD 0
MILLER SCOTT 0
<snip>
在您的示例中,例如
select ...
from table_of_users u
where utl_match.jaro_winkler_similarity(:P1_USER_NAME, u.user_name) > 80; -- match more than 80%