ad

《Excel VBA+SQL数据管理与应用模板开发》_3.2.3 利用 LIKE运算符进行模糊查询

网友投稿 164 2023-11-07

【摘要】 本书摘自《Excel VBA+SQL数据管理与应用模板开发》一书中第3章,第2节,韩小良著。

3.2.3 利用 LIKE运算符进行模糊查询

模糊查询是指利用LIKE 运算符进行字符串匹配的查询,其语法格式如下:

[NOT]LIKE 匹配符

匹配符有4种:“%”“_ ”“D” 和“”,其含义分别介绍如下。

1.“%”匹配符

“%”匹配符表示任意长度的字符。例如:

《Excel VBA+SQL数据管理与应用模板开发》_3.2.3 利用 LIKE运算符进行模糊查询

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小时内删除侵权内容。

上一篇:《Excel VBA跟卢子一起学早做完,不加班(实战进阶版)》_2.9.1 通过双击单元格从与其内容相同的单元格创建新表*
下一篇:跟着一起学《Excel VBA跟卢子一起学 早做完 不加班 基础入门版》_2.4.3 数据类型有哪些
相关文章

 发表评论

暂时没有评论,来抢沙发吧~