用户登录
用户注册

分享至

hibernate 查询区分大小写

  • 作者: 我叫敬业福
  • 来源: 51数据库
  • 2020-10-15

这跟程序应该没有直接的关系,你把hibernate生成的sql语句打印出来,到sql查询分析器里运行应该也是不区分大小写的,这是跟你的数据库配置或者在建表的时候的设置有直接关系.

给你推荐几种方式.

一,设置列属性方式

--区分大小写

create table tbl

(

f1 varchar(10) collate chinese_prc_cs_as --区分大小写

)

--不区分大小写

create table tbl

(

f1 varchar(10) collate chinese_prc_ci_as --不区分大小写

)


insert into tbl values('abc');

insert into tbl values('Abc');

insert into tbl values('ABC');


select * from tbl where f1 = 'abc'


如果采用不区分大小写的字段属性,则结果是

abc

Abc

ABC


如果采用区分大小写的字段属性,则结果是

abc


二,直接针对db的

--区分大小写

alter database dbname collate chinese_prc_cs_as


--不区分大小写

alter database dbname collate chinese_prc_ci_as 


三,查询时来转换


select * from tbl where convert(varbinary, f)=convert(varbinary, N'ABC')


四,数据库安装设置时就处理

这样数据库名,用户,表名,字段等都区分了


五,自己写函数来处理

不过这样效率较差,因为一般方法是逐个字符按照ascii编码比较 


六,采用contains胃词

一般情况我们都是用

select * from table1 where t1='xx'

这种是不区分大小写的,下面这种大小写敏感,这需要在该表建立全文索引才能使用.

select * from table1 where contains(t1,'"xx"')


软件
前端设计
程序设计
Java相关