一、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")’;