lower等函数位置不同引起的后遗症

December 18th, 2009 by ahuoo Leave a reply »

刚找出了一个bug,大家来看下面几条SQL:

建立测试环境
1、create table temp_email(fid number(10),femail varchar2(50));

2、insert into table temp_email values(1,'3266988@qq.com');
    insert into table temp_email values(1,'3266988@QQ.com');
    insert into table temp_email values(1,'3266988@qq.COM');
    insert into table temp_email values(1,'2558418@163.com');
    insert into table temp_email values(1,'2545459@qq.com');

执行如下2条SQL:
测试1:
   select femail
    from
    (select lower(femail) femail from temp_email
     where femail not like '%@qq.com'
     )a
    where a.femail like '%@qq.com'

测试2:
   select femail
    from
    (select femail from temp_email
     where lower(femail) not like '%@qq.com'
     )a
    where a.femail like '%@qq.com'

结论:函数的位置不要乱用,在此的实例显示了若有大小写的数据,就会造成不必要的麻烦!


Advertisement

Leave a Reply