sqlite查詢問題,由字母大小寫敏感引起

來源:互聯網
上載者:User

標籤:user   就是   分享   技術   ase   服務   資料庫   table   png   

目前做的項目之前是用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就可以了。

sqlite查詢問題,由字母大小寫敏感引起

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.