在實際項目需求中,我們常常會用到模糊查詢,比如在高校名單中查詢含有“武漢”的學(xué)校。這里主要總結(jié)三種方式,歡迎大家補(bǔ)充。
第一種方式,通配符“%”
采用通配符實現(xiàn)上述例子
select * from schools where schoolName like '%武漢%'
這是一種比較常見的方式,也是我們初學(xué)的時候用的最多的方式,但這種方式是效率最低的一種。最近在實際項目中,需要從10W+條數(shù)據(jù)中進(jìn)行模糊查詢(當(dāng)然,這里是多表join查詢,沒有視圖過渡,對查詢效率有影響,但這三種方式都是在同一環(huán)境下比較的。實際項目中會采取一些方法來改進(jìn)),執(zhí)行查詢過程總共花費時間6分半。
第二種方式,charIndex
采用charIndex實現(xiàn)上述例子
select? *? from shools where charIndex('武漢',schoolName) > 0
本人比較推薦使用這種方式。和第一種方式相比,在10W+條數(shù)據(jù)中進(jìn)行模糊查詢,執(zhí)行查詢過程總共花費時間少于5分半。與這效率相當(dāng)?shù)倪€有第三種方式。
第三種方式,patIndex
采用patIndex實現(xiàn)上述例子
select? * from schools where patIndex('%武漢%',schoolName) > 0
需要注意,第三種方式中含有通配符。