Access/SQL Server 2008 使用 Like 加入不起作用

2024-03-31

我提前道歉,因为这个问题在这个网站上多次以各种形式出现,但我尝试实施的解决方案似乎都无法正常工作,而且我找不到可以得到正确答案的已回答问题。

我正在为一位同事从事 Access 工作,不过一旦他能够设置服务器,将来可能会使用 SQL。我正在尝试使用 Like 连接两个表,这很简单,只是它无法正常工作。首先,每个表中的一个示例:

T1

+-------------------------+--------------------------------------------------------------+--------------+
|LOCATION_CG_LOC_LEGACY_ID|LOCATION_CODE_DESC                                            |PI_LOW_SIDE_MW|
+-------------------------+--------------------------------------------------------------+--------------+
|55555-Opt01              |Autobot Transformer, 800/900 NETWORK, Optimus #1 - 800 NETWORK|5             |
+-------------------------+--------------------------------------------------------------+--------------+
|55555-Opt02              |Autobot Transformer, 800/900 NETWORK, Optimus #2 - 800 NETWORK|6             |
+-------------------------+--------------------------------------------------------------+--------------+
|55555-Opt03              |Autobot Transformer, 800/900 NETWORK, Optimus #3 - 800 NETWORK|6.5           |
+-------------------------+--------------------------------------------------------------+--------------+

T2

+------+-----------------------------------------+------------+
|DIVID |DMT Bank Name                            |5 Digit Code|
+------+-----------------------------------------+------------+
|647531|800/900 NETWORK, Optimus #1 - 800 NETWORK|55555       |
+------+-----------------------------------------+------------+
|647532|800/900 NETWORK, Optimus #2 - 800 NETWORK|55555       |
+------+-----------------------------------------+------------+
|647533|800/900 NETWORK, Optimus #3 - 800 NETWORK|55555       |
+------+-----------------------------------------+------------+

我试图从本质上组合类似的项目,以便我可以执行我想要的任何查询。不过现在,我可以选择全部。我只需要组合相似的物品即可。在 T1 中,第一列 [LOCATION_CG_LOC_LEGACY_ID] 是非重复的唯一项。在T2中,[DIVID]是一个不重复的唯一项。我试图使用一起查询它们

SELECT *
FROM [Data Table 1] INNER JOIN [Data Table 2] ON (([t1].[LOCATION_CODE_DESC] Like [t2].[DMT Bank Name]
OR [t2].[DMT Bank Name] Like [t1].[LOCATION_CODE_DESC]) AND ([T1].[LOCATION_CG_LOC_LEGACY_ID] Like [t2].[5 Digit Code] or [t2].[5 Digit Code] Like [T1].[LOCATION_CG_LOC_LEGACY_ID]));

现在,我认为该连接条件的后半部分存在问题,但即使仅使用前半部分,我也会得到零结果。但是,如果我编辑每个表中的中间列,然后使用该条件的前半部分,它就可以完美工作。换句话说,如果我使列完全匹配,则查询似乎可以工作,这违背了使用“like”连接的初衷。

我还没有在 SQL Server 中尝试过这一点,但我需要让它在 Access 中工作,至少作为概念证明。各位出色的女士们先生们能给我任何帮助,我将不胜感激,即使它指出了我像个傻瓜一样错过的另一条线索。

最后,如果可能的话,我尽量避免使用 VBA。


您需要添加通配符,例如%使用时LIKE在 sqlserver 中,否则它本质上变成了相等性检查(=)。这是带有通配符的查询:

SELECT *
FROM  t1 
INNER JOIN  t2 
ON [t1].[LOCATION_CODE_DESC]   Like '%' + [t2].[DMT Bank Name]+ '%' 
AND [T1].[LOCATION_CG_LOC_LEGACY_ID] Like '%' + CONVERT(varchar(50),[t2].[5 Digit Code] )+ '%';

这是一个小提琴:http://sqlfiddle.com/#!3/dc2b9/10/0 http://sqlfiddle.com/#!3/dc2b9/10/0

您还需要转换为int to a varchar某种兼容性。

但请注意,做一个join类似地,尤其是使用转换时,会导致大型数据集的性能非常差。

编辑:MS Access

当您将 int 转换为 string 时,MS Access 会有所不同,并使用不同的通配符。我没有安装访问权限,所以无法测试,但我认为您的 MS Access 查询将如下所示:

SELECT *
FROM  t1 
INNER JOIN  t2 
ON [t1].[LOCATION_CODE_DESC]   Like '*' & [t2].[DMT Bank Name] & '*' 
AND [T1].[LOCATION_CG_LOC_LEGACY_ID] Like '*' & CStr( [t2].[5 Digit Code] ) & '*';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Access/SQL Server 2008 使用 Like 加入不起作用 的相关文章

  • 重用 t-sql 游标的起始位置?

    我正在开发一个在临时表上使用游标的存储过程 我已经阅读了一些关于为什么不需要游标的内容 但在这种情况下我相信我仍然需要使用游标 在我的过程中 我需要遍历表的行两次 声明游标后 已经单步执行临时表并关闭游标 重新打开时游标的位置是否仍保留在表
  • SQL Server 文件操作?

    使用 SQL Server 2005 如何使用 T SQL 将文件读入 SPROC 所以 假设我有一个像这样的 CSV 文件 ID OtherUselessData 1 asdf 2 asdf 3 asdf etc 我基本上想这样做 Sel
  • 捕获 Unicode 文本(西里尔文)并将其插入 MS Access 数据库

    我继承了一个旧的 Web 应用程序 该应用程序使用经典 ASP 将表单中收集的数据写入 Access 2007 数据库 现在他们需要它能够收集西里尔字母的输入 我完全不熟悉代码页 字符集 也不熟悉非拉丁字母 我尝试将输入表单页面上的字符集更
  • Access之后我们要做什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 SQL 查询创建逗号分隔的列表?

    我有 3 个表 名为 应用程序 ID 名称 资源 id 名称 应用程序资源 id app id resource id 我想在 GUI 上显示所有资源名称的表格 在每一行的一个单元格中 我想列出该资源的所有应用程序 以逗号分隔 所以问题是
  • 如何获取MS Access中表的列名? [复制]

    这个问题在这里已经有答案了 如何使用查询获取MS Access中表的字段名或列名 有人可以帮助我解决这个问题吗 就像如果我有一个名为 员工 的表 我需要单独获取员工的字段名称 id 姓名 工作状态等 而不是其记录 有什么方法可以得到这个吗
  • Access / Word 2010 VBA 邮件合并尝试打开 [文件夹名称].mdb 而不是 ACCDB 源

    我们正在尝试从 Access 中自动执行邮件合并过程 单击按钮后 VBA 将运行指定当前数据库 accdb 作为数据源并运行 SQL 具体代码如下 Set up Word Dim objWord As Object Set objWord
  • mysql GROUP_CONCAT 重复项

    我从 farmTOanimal 表中进行连接 如下所示 有一个类似的farmTotool表 id FarmID animal 1 1 cat 2 1 dog 当我在视图中加入表时 我得到的结果如下所示 FarmID animal tool
  • 根据数据框中的内容从SQL Server删除行

    我在 SQL Server 中有一个名为的库存表dbo inventory其中包含Year Month Material and Stock quantity 我每天都会收到 csv 文件形式的新库存计数 需要将其加载到dbo invent
  • 如何将 SQL Server 中同一表中的一列插入到另一列中

    我需要将一列的数据插入到同一个表中的另一列中 谁能告诉我这个怎么写 Thanks UPDATE table SET col 2 col 1
  • 就SQL注入而言,哪种sql查询更安全

    我有两个 SQL 查询正在尝试更新sup and opp每次调用查询时 值分别为 1 和 1 第一个查询 query update disc set sup sup opp opp where did did int sup getnoof
  • 无法删除 Microsoft Access 2003 中的主 -> 子子表单链接

    我在删除访问子报表数据表单中的主 gt 子链接字段时遇到问题 我尝试了各种方法来删除它们 使用子报表的属性窗口以及链接向导 我还从数据库中删除了子报表 然后将现有对象重新导入到新的访问实例中 一旦我重新添加子表单并将其命名为相同的名称 链接
  • 在 SQL Server Management Studio 中格式化 SQL

    在 Visual Studio 和其他 IDE 中 您可以使用键盘快捷键 通过菜单或在键入时自动设置代码格式 我想知道是否有办法在 SQL Server Management Studio 中启用此标准功能 我正在处理一些大型存储过程 这些
  • Rails 中 WHERE 子句中的 ALL 运算符

    关联关系如下图所示 InstructorStudent has many fees Fee belongs to instructor student 我想要获得在所有给定数组中具有每月详细信息的指导学生 如果其中任何一个中不存在每月详细信
  • 复杂的sql树行

    表结构 id message reply id 1 help me 0 434 love to 1 852 didn t work 434 0110 try this 852 2200 this wont 0 5465 done 0110
  • 使用来自另一个的 SELECT 更新表,但字段为 SUM(someField)

    基本上我有这样的事情 UPDATE Table SET Table col1 other table col1 FROM Table INNER JOIN other table ON Table id other table id 问题是
  • SQL Server 读提交隔离级别到底如何工作?

    恕我直言 我发现两个关于如何进行不一致的描述ReadCommitted有效 均在 MSDN 文档中 https msdn microsoft com en us library ms173763 aspx https msdn micros
  • 无法批量加载。操作系统错误代码 5(访问被拒绝。)

    由于某些奇怪的原因 我在执行批量插入时遇到问题 BULK INSERT customer stg FROM C Users Michael workspace pydb data andrew out txt WITH FIRSTROW 0
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • Oracle SQL-根据记录的日期与历史记录标记记录

    这是我在论坛上的第一篇文章 通常我能够找到我需要的东西 但说实话 我不太确定如何针对该问题提出正确的问题 因此 如果论坛上已经有答案而我错过了 请接受我的歉意 我通过 Benthic Software 在 Oracle 数据库中运行以下代码

随机推荐