一次解析文件2行-英雄云拓展知识分享
164
2023-11-07
【摘要】 本书摘自《Excel VBA+SQL数据管理与应用模板开发》一书中第3章,第2节,韩小良著。
3.2.3 利用 LIKE运算符进行模糊查询
模糊查询是指利用LIKE 运算符进行字符串匹配的查询,其语法格式如下:
[NOT]LIKE 匹配符
匹配符有4种:“%”“_ ”“D” 和“”,其含义分别介绍如下。
1.“%”匹配符
“%”匹配符表示任意长度的字符。例如:
LIKE'A% '表示所有以A 开头的字段数据。
LIKE'%A'表示所有以A 结尾的字段数据。
LIKE'%A% '表示所有包含字母 A的字段数据。
2.“_”匹配符
“_ ”匹配符表示一个任意字符。例如:
LIKE'_A '表示所有两个字母的数据中以A结尾的字段数据。
LIKE'__AB '表示所有4个字母的数据中以AB 结尾的字段数据。
LIKE'A_'表示所有两个字母的数据中以A 开头的字段数据。
LIKE'AB__ '表示所有4个字母的数据中以AB 开头的字段数据。
3.“D”匹配符
“D” 匹配符表示在指定范围内的任意单个字符。例如:
LIKE'[BC]%'表示所有以B或 C 开头的字段数据。
LIKE'[B-K]book%'表示所有5个字母中都以B 到 K 中任意一个字母开头且后面是字母 book 的字段数据。
LIKE'[伟,玮]%'表示名字中第2个字是“伟”或“玮”的字段数据。
4.“~”匹配符
“·”匹配符表示不在指定范围内的任意单个字符。例如:
LIKE'[B^a]%'表示所有以B开头且第2个字母不是a 的字段数据。下面的例子就是从合同信息中查找供货商名称中含有“冶金”两个字的所有合同信息。
Sub 案例3-80
Dim cnn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ws As Worksheet
Set ws =ThisWorkbook.Worksheets("查找结果")
ws.Cells.ClearContents
'建立与工作簿的连接
With cnn
.Provider ="microsoft.ace.oledb.12.0"
.ConnectionString="Extended Properties=Excel 12.0;"_
&"Data Source="&ThisWorkbook.FullName
.Open
End With
'设置查询语句
SQL="select*from [合同信息$]where 供货商 like'% 冶金%'"
'开始查询
rs.Open SQL,cnn,adOpenKeyset,adLockOptimistic
'复制标题
Fori=1 To rs.Fields.Count
ws.Cells(1,i)=rs.Fields(i-1).Name
Next i
'复制查找出的数据
ws.Range("A2").CopyFromRecordset rs
'关闭查询和连接
rs.Close
cnn.Close
Set rs =Nothing
Set cnn =Nothing
End Sub
说明
如果要查询某字段中不含某字符的记录,要使用NOTLIKE运算符。
例如,要查询供货商名称中没有“冶金”两个字的合同数据,则SQL语句如下: SQL="select*from [合同信息$]where 供货商 not like'%冶金%"往小 (Descending) 的排列过程。在这种情况下,就可以运用ORDER BY 这个子句来达到我
们的目的。
ORDER BY子句的语法如下:
SELECT字段列表 FROM 数据表[WHERE条件]ORDER BY 字段名[ASC,DESC]
这里的方括号口代表 WHERE 不是一定需要的。不过,如果WHERE 子句存在,它必须 是在ORDER BY子句之前的。
ASC代表结果会以从小往大的顺序列出(升序),而DESC代表结果会以从大往小的顺 序列出(降序)。如果两者皆没有被写出,那么就默认为ASC (升序)。
可以对几个不同的字段来排顺序。在这种情况下, ORDER BY 子句的语法如下:
ORDER BY 字段名1[ASC,DESC], 字段名2[ASC,DESC], …
在此情况下,将首先对第一个字段进行排序,如果第一个字段的几个记录的值相同,那 么就按照第二个字段进行排序,以此类推。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~