忽略大小写查询

来源:互联网 发布:传智播客尹成c语言 编辑:程序博客网 时间:2024/05/16 04:52

一、Hibernate中实现忽略大小写查询:

如果是使用HQL,可以使用lower或者upper函数来实现

from User u where lower(u.username)=lower(’Mp3′)

这样就可以查出来mp3,mP3等用户了!

如果使用Criteria,首先使用Restrictions创建Criterion

如果是字符串相等匹配Restrictions.eq(’username’,'mp3′).ignoreCase()

如果是字符串模糊匹配Restrictions.ilike(’username’,'mp3′)或者Restrictions.like(’username’,'mp3′).ignoreCase()

这样查询时就使用的模糊查询了,这种方法虽然实现了功能,但是每次查询都进行大小写转化,效率不高啊!

 

二. 在SQL中使用函数:

    不同数据库对大小写处理是不一样的,   SQL SERVER/ORACLE都是大小写敏感的.   如果要在SQL中忽略大小写,   ORACLE中可以这样写:  
  select   *    
      from   tableA
    where   UPPER(oneColumn)   =   UPPER(’"value")’;       

    当然UPPER()函数也可以用LOWER()函数来替代,   只要前后一致就可以. 值得一提的是,在有些数据库中使用的函数名不一样,例如在DB2,DB2E中使用的是UCASE() and LCASE(). 但是在DB2或DB2E中,一般只是使用函数来改变字段的大小写,而传进的参数值通常在代码中改写。例如:

select   *    
      from   tableA
    where   UPPER(oneColumn)   =   "VALUE";  

而不能这样:

select   *    
      from   tableA
    where   UPPER(oneColumn)   =   UPPER(‘"value")’;

原创粉丝点击