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