Oracle通配符不匹配?

时间:2014-01-07 17:09:49

标签: sql oracle

我正在查询Oracle(JDE)数据库中的部件号。如果我使用条款WHERE Item LIKE 'AS-%',它会正确返回以“AS-”开头的所有项目。但是,当我尝试通过使用子句WHERE Item LIKE 'AS-%A'缩小该集合来查找与模式匹配并以“A”结尾的所有部分时,即使它们确实存在,我也没有得到任何结果!

是什么给出了?

3 个答案:

答案 0 :(得分:3)

当您认为您的查询根据您对行的值的理解错误地标识行时,请使用DUMP()函数检查值。

这将告诉您单元格的确切内容,包括您在显示屏上看不到的任何字符。

答案 1 :(得分:0)

我怀疑列值末尾是否存在空格或不可打印字符。

如果值实际上以AS-开头并以A

结束,那么'AS-%A'必须有效

要检查,请尝试使用trim(Item) like 'AS-%A'

进行查询

答案 2 :(得分:0)

也许您无法看到数据末尾的某些控制字符。尝试使用regexp_like:

with x as (
  select 'AS-123B' as col from dual
  UNION
  select 'AS-456A' as col from dual
  UNION
  select 'AS-789A' || chr(0) as col from dual
)
select * from x
where regexp_like (col, 'AS-(.*)A[[:cntrl:]]?')

输出:

COL
AS-456A
AS-789A