首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Microsoft 2016 -需要结合使用联接的SQL查询.在Col1上最像Col2

Microsoft 2016 -需要结合使用联接的SQL查询.在Col1上最像Col2
EN

Stack Overflow用户
提问于 2020-10-13 12:46:07
回答 1查看 43关注 0票数 1

我在2016年微软Access公司工作。我有一个数据表数据,其中包含了数千行数据。我有一个查找表查找,它包含已知的所有项目ID。这些表应该结合在项目ID上,这是一个字符串字段。通常,我会使用以下方法连接这些表:

代码语言:javascript
运行
复制
SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] = [Lookup].[ProjectID]

问题是,字段是要查找的更长的字符串。作为一个例子

数据:

  • PROJECT.TS.01.004.005

查找:

  • PROJECT.TS
  • PROJECT.TS.01
  • PROJECT.TS.02

我尝试使用以下方法:

代码语言:javascript
运行
复制
 SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] LIKE [Lookup].[ProjectID] + '*'

唯一的问题是,查找表中有多个“类似”数据字段的条目。我需要能够加入的条目,不仅是“喜欢”,而且有最大的长度,所有的那些是“喜欢”。

我真正需要的似乎是调用一个“最类似”的函数,但在我的SQL语法知识中,它并不存在。

对于如何有效地连接这两张桌子,有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-13 18:15:32

考虑:

代码语言:javascript
运行
复制
SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] LIKE [Lookup].[ProjectID] + '*' 
WHERE Len(Lookup.ProjectID) = DMax("Len(ProjectID)", "Lookup", "'" & Data.ProjectID & "' LIKE ProjectID & '*'");

代码语言:javascript
运行
复制
SELECT * FROM [Data] LEFT JOIN [Lookup] ON [Data].[ProjectID] LIKE [Lookup].[ProjectID] + '*' 
WHERE Len(Lookup.ProjectID) = (
    SELECT Max(Len(Lookup.ProjectID)) FROM Lookup WHERE Data.ProjectID LIKE Lookup.ProjectID & "*");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64335564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档