sqlite 和mysql 大小写_sqlite查询问题,由字母大小写敏感引起

目前做的项目之前是用mysql,这是个错误的选择,因为本身并不是服务器-客户端模式的项目,而是一个CS架构项目,mysql这种需要较繁复配置的数据库并不合适。需要的应该是sqlite这类,内嵌的数据库。

所以最近统一做数据库替换工作,将之前mysql数据库操作的所有接口统一改成sqlite数据库操作的接口。

按道理讲sql语句都是一样的,只要改下调用的数据库C++接口就可以了。

然后就出现一个问题,一个表的查询一直是错的。

经过调试和实验发现,查询语句中用户ID都是大写字母,实际数据库中含有小写字母。

91473134ccf188a2645a6377ddd9f957.png

查询为空因为这串user_id  'F56DC7AD-2AAB-499C-A1A5-0EFC154E15E2' 都是大写字母。

实际上:

caa949429142a39666f039de2ac535b3.png

user_id为:F56DC7AD-2AAB-499c-A1A5-0EFC154E15E2,含有小写字母

为什么之前在mysql中没有这样的问题呢?

因为在mysql中查询对字母大小写不敏感:

6db8bff3700df3d23bff6f573d722f54.png

可以看出,即使f这个字母大小写不一致,还是成功查到了

最后我解决这个问题方法就是,让原本大小写敏感的sqlite变成大小写不敏感,这样就与之前的mysql保持一致。

建表时:

CREATE TABLE if not exists user_cert (user_id char(128) NOT NULL  COLLATE NOCASE,cert_id char(128) NOT NULL,id integer  primary key autoincrement);

特表规定 COLLATE NOCASE就可以了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值