數據庫區分大小寫查詢 & sqlite不區分大小寫查詢


默認情況下,SQL Server不區分大小寫,假設數據表test的name字段中有數據“abcd”和“Abcd”,如果使用查詢語句:select * from test where name like 'a%',則查詢的結果會把上面的兩條數據都查詢出來,這一點上和Oracle有區別.

可以通過設置排序規則使其區分大小寫,分別為:創建數據庫,修改數據庫,創建表的字符型列時指定排序規則來實現

eg:

1.創建數據庫區分大小寫

create database test collate Chinese_PRC_CS_AS

2.修改數據庫區分大小寫

alter database test collate Chinese_PRC_CS_AS

3.創建表區分大小寫

create table test(tid in primary key, name varchar(20 collate Chinese_PRC_CS_AS))

大部分數據庫在進行字符串比較的時候,對大小寫是不敏感的,但是,在SQLite中,對大小寫是敏感的。

有表test如下:

id name
1 ABCDE
2 abcde
3 ABcde
4 abCDE
5 aaaaa
6 bbbbb

 

 

 

 

 

 

 

 

 

 

 

執行下面sql語句

select * from test where name = 'abCDE';

結果是沒有查詢到任何記錄(sqlite在進行字符串查詢的時候,默認是區分大小寫)

區分大小寫的三種解決方案

一:使用大小寫轉換函數LOWER,UPPER

eg:select * from test where LOWER(name) = 'abcde';

二:在進行比較時強制聲明不區分大小寫

select * from test where name = 'abcde' collate nocase;

三:創建表時聲明該字段不區分大小寫

create table test (id integer, name text collate nocase)

注:

(1)不推薦使用方案一,有額外的性能消耗

(2)如果只是少量查詢不需要區分大小寫,建議使用方案二

(3)在任何情況下都不需要區分大小寫,方案三完美獻身


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM