| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1958 人关注过本帖
标题:在vb环境下访问access,怎么在join语句中使用like进行模糊匹配
只看楼主 加入收藏
ssource
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-11-7
结帖率:0
收藏
已结贴  问题点数:20 回复次数:5 
在vb环境下访问access,怎么在join语句中使用like进行模糊匹配
论坛各位大神,我在Access下直接运行以下的SQL语句,能够顺利执行,可以得到预期结果。
select * into TableTemp2 from (select B.RowID,A.BeforeRevise, A.AfterRevise,A.BackUp from TableReviseAuthor1 as A inner join TableTemp AS B on B.Author like '*' & A.BeforeRevise & '*')
但在VB环境下,要对Access执行上述SQL语句相同的操作,将其中like后的*必须使用%来替代,执行以下语句:
Public PuChaDataBase As ADODB.Connection
Set PuChaDataBase = New ADODB.Connection
PuChaDataBase.ConnectionString = "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & App.path & "\PuChaDataBase.mdb" & ";Persist Security Info=True"
PuChaDataBase.Open
strSQL = "select * into TableTemp2 from (select B.RowID,A.BeforeRevise, A.AfterRevise,A.BackUp from TableReviseAuthor1 as A inner join TableTemp AS B on B.Author like '%' & A.BeforeRevise & '%')"
PuChaDataBase.Execute strSQL
总是报“无效的模式字符串”的错,如果把strSQL字符串中like后两个%之间字段A.BeforeRevise改为固定字符串(比如:"李白"),就可以运行。
Access中选项页中的SQL SERVER兼容语法下的两个选项也打上勾了,见下图。
请教各位大神,究竟是哪个地方出问题了。
图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2020-11-7 11:57编辑过]

搜索更多相关主题的帖子: like select 语句 join access 
2020-11-07 11:56
marie521
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2012-7-9
收藏
得分:10 
'%" & A.BeforeRevise & "%'换个这个试试。。我用的是这个格式的,%后是双引号
2020-11-07 14:10
ssource
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-11-7
收藏
得分:0 
回复 2楼 marie521
你的意思是换成这样吗?
strSQL = "select * into TableTemp2 from (select B.RowID,A.BeforeRevise,A.AfterRevise,A.BackUp from TableReviseAuthor1 as A inner join TableTemp AS B on B.Author  like '%"" + A.BeforeRevise + ""%')"
报以下错误
图片附件: 游客没有浏览图片的权限,请 登录注册
2020-11-07 14:41
cwa9958
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:76
帖 子:279
专家分:1367
注 册:2006-6-25
收藏
得分:10 

A.BeforeRevise是个变量吧

strSQL = "select * into TableTemp2 from (select B.RowID,A.BeforeRevise, A.AfterRevise,A.BackUp from TableReviseAuthor1 as A inner join TableTemp AS B on B.Author like '%" & A.BeforeRevise & "%')"
2020-11-09 08:01
ssource
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-11-7
收藏
得分:0 
回复 4楼 cwa9958
A.BeforeRevise是表TableTemp中的字段,不是变量。
2020-11-09 19:35
ssource
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2020-11-7
收藏
得分:0 
不再纠结于like了,改用instr解决了问题,SQL语句如下:
strSQL = "select B.RowID,A.BeforeRevise, A.AfterRevise,A.BackUp into TableTemp2 from TableReviseAuthor1 as A inner join TableTemp AS B on instr(B.Author,A.BeforeRevise)>0"
2020-11-26 21:06
快速回复:在vb环境下访问access,怎么在join语句中使用like进行模糊匹配
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025341 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved