Oracle stricty like operator

时间:2015-04-15 13:45:26

标签: oracle plsql

我有一张表,其中某些列可能具有这样的值

  • %YZW

我有#34; Oracle通配符"在表中,因为我将以这种方式访问​​它:

where myVal like field_1

例如,如果myVal是XYZW,则previus将匹配两者:

  1. 第一场比赛是因为我有%跟随YZW
  2. 第二场比赛因为%会匹配任何内容
  3. 有一种方法可以说"如果myVal在字段中完全明确,只考虑它?"

    我试着通过一个例子更好地解释:

    • myVal = XYZW - >仅与%YZW(任何具有严格%的记录)匹配
    • myVal = YZ - >应该只与%
    • 匹配

1 个答案:

答案 0 :(得分:1)

您可以为您运行的比较创建订单。

create table match_tests (val varchar2(10), priority number);
insert into match_tests values ('%YZW',1);
insert into match_tests values ('%',2);

此优先级列指定您想要'%YZW'匹配被认为是最高优先级,其次是'%'作为次高。

然后你可以像这样查询:

select min(priority)
from match_tests
where 'XYZW' like val;

结果是1。

或者这个:

select min(priority)
from match_tests
where 'YZ' like val;

结果是2。