【发布时间】:2019-07-26 11:31:58
【问题描述】:
问题:查询无法提取在长文本字段中找到的所有限制字词。它从 ~100 个值的表列中获取受限制的单词。
样本数据
表格:带有长文本字段的 RecipeTable:RecipeText
RecipeText 字段的示例内容:将大头菜、韭菜、胡萝卜和卷心菜添加到 Instant Pot®。密封并在高压下煮4分钟。快速释放蒸汽。将牛腩切成薄片穿过谷物,然后转移到盘子里。把蔬菜放在肉周围,撒上欧芹,配上酸奶油、辣根和芥末。
期望的结果: 想要将 RecipeText 字段与表中此短文本字段 RestrictedItem 中的每个值进行比较:RestrictedTable。
RestrictedTable.RestrictedItem 包含 100 个值。假设这个练习包含 6 个:牛奶、烘焙、勺子、胡萝卜、芥末和蒸汽。
查询将在单个记录中以无特定顺序查找这些匹配词:carrots mustard steam
我试过this:How to find words in a memo field with microsoft access
结果:仅在长文本字段的众多匹配项中找到 1 个。
期望结果:查找从长文本字符串中提取的ALL匹配词。重复和通配符很好。区分大小写不好。
示例尝试:
SELECT a.Adjectives, b.Content
FROM A, B
WHERE b.Content Like "*" & a.[adjectives] & "*"
LIKE 和之后是我认为问题所在。我试过使用 %、括号、空格等都无济于事。
我的变成了这个:
SELECT RecipeTable.RecipeText, RestrictedTable.RestrictedItem
FROM RecipeTable, RestrictedTable
WHERE RecipeTable.RecipeText LIKE "*" & RestrictedTable.RestrictedItem & "*";
注意事项:
- 我可以找到很多建议来查找单个单词,但不能将整个表列与一个字段进行比较。
- 还有很多关于找到第一个子字符串或第 n 个位置的建议,但我想要所有匹配的子字符串。不是位置,我担心应用修剪等会减慢搜索 100 个单词并为每个单词进行修剪的速度。
- 我可以在我的表单上将它作为一个计算字段来保存 RecipeText 字段。
- 也可以创建一个按钮,该按钮将启动一个查询,以将 RecipeText 字段与 RestrictedTable.RestrictedItem 列表进行比较,并在同一表单上填写一个空字段 RestrictedFound。
【问题讨论】:
-
Replace() 函数不区分大小写。
Replace("ABC","b","b")将返回“AbC”。编辑问题以显示示例数据和所需结果。 -
谢谢。我已经更新了我上面的问题。
-
我尝试了您的查询匹配带有限制字词的食谱,它返回 3 条食谱记录,每个匹配的限制字词有 1 条记录。但是你想知道同一个词出现了多少次?为什么?目的是什么?
-
您的解决方案是否返回 3 个“记录”?或者,它是在一条记录中返回 3 个找到的单词吗?后者是我想要实现的目标。
-
还有另一种查看匹配词的方法 - 通过在字段中突出显示它们。我问了这个问题here。感谢您对两者提出建议。今晚我会试试你的想法!