当前位置: 代码迷 >> Oracle开发 >> 奇怪的查询结果,与预期的记录条数不合乎
  详细解决方案

奇怪的查询结果,与预期的记录条数不合乎

热度:86   发布时间:2016-04-24 06:26:01.0
奇怪的查询结果,与预期的记录条数不相符
VEHICLE 中车牌号唯一,不重复,hphm ='京BPZ817'只有一条记录存在。

下面的查询结果会出现两条一模一样的记录。
select * from (
  select   replace(('京'||hphm),'京京','京') hphm,hpzl  
      from VEHICLE t
     where hpzl in ('01', '02')
     )
     where hphm ='京BPZ817'
-----------------------------------------
下面的查询只返回一条记录
select * from (
  select   hphm,hpzl  
      from VEHICLE t
     where hpzl in ('01', '02')
     )
     where hphm ='京BPZ817'
-------------------
问题应该就出现在replace(('京'||hphm),'京京','京') 上面。
我只把这个车牌号的记录单独放到另外一张表,对那张表执行第一个sql查询,返回一条记录

车牌号格式不一致,有的前面带京,有的直接就是从字母开始,我的目的就是补齐前面的“京”
问题1:补齐前面的“京”还有其他办法么,我能想到的是函数function,但是记录数多的情况,速度慢。
问题2:这种莫名其妙的结果,是怎么回事呢。我
------解决思路----------------------
你明显有“重复”的车牌记录,一条hphm ='京BPZ817'、一条hphm ='BPZ817'。
这是数据的问题,必须统一车牌格式才能真正唯一。
------解决思路----------------------
你的数据库里,肯定有两条这样的数据,

京BPZ817 和 BPZ817

就是说,前面没有“京”字。
  相关解决方案