SQL中的模式匹配

时间:2018-04-03 13:19:10

标签: sql oracle12c

我有两个字符串(varchar2),我想比较它们,就像JAVA的匹配方法一样。我有两个可能的例子:' GC'将匹配GC'和' GC_DE'将匹配GC *'。我已经使用过REGEXP_LIKE但是这种方法导致了一个问题,因为下一个条件为真 - REGEXP_LIKE ('ABVCDRC-OM', 'CB*'),即使'ABVCDRC-OM'不是以CB开头也是如此。有没有办法做到这一点?

详细信息:T_COUNTRY包含'GC_DE', 'GC_GB', 'GC_GE', 'GC_RO'等条目。我想显示所有记录,但是按T_FILTER ('GC_R*')的条目进行过滤。这些条目并不总是像GC一样。我也可以使用OC_或GV等,具体取决于用户输入。所以我需要比较没有固定值的db字段。使用select * ...其中REGEXP_LIKE (entity_id, filter_id)无法解决我的问题。

2 个答案:

答案 0 :(得分:0)

我会使用例如REGEXP_LIKE但我会将正则表达式更准确地定义为'^GC_[A-Z]{2}$'。这将确保只匹配GC_xx个字符串。

答案 1 :(得分:0)

Like(%GC%)应该按您需要的方式工作。

when T_FILTER like (%GC%)会为您提供GC中的所有内容。