Excel 2010 SQL應用032 字元範圍的模糊匹配查詢

ngbshzhn發表於2020-12-16

目錄

源資料表

解決方案

模糊匹配中字元區間的表示


源資料表

 

 

學號姓名成績
20070519何豔C
20091884何冬梅D
20090790馮晨E
20071880彭勤B
20090562葉倩C
20091713曾德昌C
20081058曹乾剛A
20090018雷小露B
20071277餘佳麗A
20081809趙林E
20071927鄧明昊A
20060058邱志娟A
20091932馬琴D
20080751王清秀C
20081379李曉斌C
20080702王川洪D
20081079肖妤翊E
20060338程飛娥B
20061072孫雙米B
20081226張玲A
20070995周榕珍B
20090679劉芙蓉E
20091704王亞坤C
20081217柴俊B
20090532隨婷婷D
20080336文森C
20071031欽麥翁姆E
20081452歐仁壽C
20080375王清容A
20071469羅秀麗C
20090204楊永豔D
20060228姚鵬D
20060525盧思彤A
20091284何剛B
20061998劉華平F
20060304馬曉冬D
20060844尹玫D
20071318李金龍E

    許多學校採用5分制的成績,這樣的成績計分通常採用A、B、C、D、E從高到低表示成績。如圖所示為某學校某科目的考試成績,查詢此次考試中成績為C以上(包含C)的同學,而不顯
示成績為D和E的同學。

解決方案

SELECT * 
FROM [sheet1$]
WHERE 成績 LIKE '[A-C]'

模糊匹配中字元區間的表示

    在LIKE運算子的匹配模式中,可以用方括號表示某一範圍的字元,其具體格式為:   

[value1-value2]

    其中,value1和value2分別代表指定範圍的最小值和最大值。value1必須小於或等於Value2,才能得到正確的結果,當value1等於value2時,就相當於運用了等號運算子查詢欄位值等於value1的資料。該特性類似於BETWEEN運算子。在英文匹配模式中,value1和Value2只能是A~Z的一個字元。如:[C-Q]的表示方法是正確的,而[AC-AD]的表示方式是錯誤的。
    在Excel SQL中,英文字元大小是按照ASCⅡ碼進行排列的:A最小,Z最大。但是英文字元的比較是不區分大小寫的。因而,本例的實現也可以通過比較運算子實現,語句如下:   

SELECT *
FROM [sheet1$]
WHERE 成績<='C'

    但是相對於比較運算子,LIKE的模糊匹配更靈活且適應性更廣。比如,在某個英文單詞列表中要查詢第二個字母為"A"~“C”的所有英文單詞,可以用“_[A-C]%"實現。這種查詢是比較運算子不能實現的。
    範圍匹配還可以用於匹配指定範圍以外的資料,其格式如下:

[!value1-value2]

如本例中,如果要查詢成績為C(包含C)以上的所有同學,還可以用以下SQL語句實現:

SELECT *
FROM [sheet1$]
WHERE 成績 LIKE '[!D-E]'

該語句表示成績為D~E範圍之外的資料。
    一個方括號範圍匹配模式只能表示一個英文字元,如果要採用多個英文字元的範圍匹配模式,必須使用相應個數的方括號範圍匹配。
 

 

相關文章