zoukankan      html  css  js  c++  java
  • sqlite查询问题,由字母大小写敏感引起

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

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

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

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

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

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

    实际上:

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

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

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

    可以看出,即使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就可以了。

  • 相关阅读:
    HDU1294 Rooted Trees Problem(整数划分 组合数学 DP)
    HDU2546 饭卡(背包)
    经典动态规划总结
    POJ1285 Combinations, Once Again(背包 排列组合)
    计数 组合数学总结
    莫队算法 2038: [2009国家集训队]小Z的袜子(hose)
    循环-24. 求给定序列前N项和之二
    循环-23. 找完数
    循环-22. 输出闰年
    循环-21. 求交错序列前N项和
  • 原文地址:https://www.cnblogs.com/rixiang/p/9467329.html
Copyright © 2011-2022 走看看