仅显示字符串

时间:2016-11-23 17:45:38

标签: ms-access access

我目前正在学习Access 2016,因为我觉得它可以用Excel创造奇迹。

但是,我试图找到正确的SQL代码来检测长文本中的某些单词,而只输出这些单词而不是文本本身

这是设置

  

字段名称:类型

     

长文

     

细胞信息

     

Cell1:约翰有一辆好车

     

Cell2:简路骑自行车。

     

Cell3:Janes自行车是红色的

     

输出

     

Cell1:汽车

     

Cell2:自行车

     

Cell3:自行车

我只对在查询完成时保留这些字符串中的某些单词感兴趣,并且它们应该输出到相同的Fieldname,我试图在当天的大部分时间和最后一个时间找到这些信息。如果有人知道我应该使用哪种功能,那么理智的希望就是在这里检查。

感谢您的时间

2 个答案:

答案 0 :(得分:1)

你可能不得不使用VBA,这取决于你的单词列表的大小,但是使用SQL的一种方法,假设一个相对较小的FIXED单词列表:

IIF(<Mytext> LIKE '*car*','car',IIF(<Mytext> LIKE '*bike*','bike',''))

答案 1 :(得分:1)

您可以从表中读取值或填充数组。两者都可以,但我更喜欢表驱动的代码,因为对于类似的东西,添加新的搜索词只需要你将它们添加到你的表中。

所以,我要做的是首先创建一个名为tblSearchTerms的新表。在该表中,创建一个名为SearchTerms的字段,并将每个术语(即&#34; Car&#34;,&#34; Bike&#34;等等)放在那里,每个记录一个。

然后在Access中设置一个功能。打开一个模块(一个新模块或一个你已经拥有的模块,只要它是一个模块),然后输入:

Function SearchExists(sString As String) As String

Dim db as Database
Dim rec as Recordset

Set db = CurrentDB
Set rec = db.OpenRecordset("Select SearchTerms from tblSearchTerms")

Do while rec.EOF = False

  If InStr(1, sString, rec(0)) > 0 Then
    SearchExists = "" & rec(0) & ""
    Goto BugOut
  Else
  End If
Loop

SearchExists = "Not Found"

BugOut:
End Function

现在,您要做的是创建一个查询。在该查询中,您将有一个字段来检查您的搜索字词是否存在。它看起来像这样:

MySearchTerm: SearchExists([Cell1])

当您运行查询时,该字段将填充其中一个搜索字词(如果已找到),或者将返回&#34; Not Found&#34;。

这可能需要稍微调整,因为它更适合在Access表中查找搜索词,因此需要进行一些调整才能使其与Excel一起使用,但是& #39;非常接近你需要的东西。