繁体   English   中英

当一列是文本而另一列是数字时,内部连接两个表

[英]Inner Join two tables when one column is a text and the other is number

我有一个使用一些链接的 ODBC 表的访问程序。 我最初有一个包含以下 INNER JOIN 的查询:

FROM Neptune_FN_Analysis 
INNER JOIN Neptune_prem ON Neptune_FN_Analysis.PremID = Neptune_prem.premice_id 

这工作得很好,直到列 Neptune_prem.premice_id 从数字更改为文本数据类型。 所以现在我需要一种方法,当一列是数字而另一列是文本时,可以在两列上使用 INNER JOIN。

请记住,我不能简单地更改链接的 ODBC 表正在查看的表中的数据类型。

如果这是不可能的或可笑的代码量,我的另一个逻辑选项是进行查询以创建一个本地表,我可以使用 Neptune_FN_Analysis 表中的所有相同数据进行编辑,并在该查询之后的代码中编辑列我正在加入以输入文本。 如果合理,我宁愿只修改这个 SQL 查询。

首先,我会追踪谁进行了更改并找出原因。 您可能遇到的问题不仅仅是让数字匹配。 这些更改不是无缘无故的,如果它们从数字字段更改为文本字段,可能是因为他们需要将文本数据放入字段中,现在如果你继续这样做,你将根本无法进行比较使用数字。 数据库更改需要考虑其他可能会受到影响的因素,而这一点显然没有。 作为第一步,找出是谁做的以及为什么这样做。

如果您正在谈论将“500”变成 500,请查看ValCDblCIntCCurCDec和其他转换函数:

FROM Neptune_FN_Analysis 
INNER JOIN Neptune_prem ON Neptune_FN_Analysis.PremID = CInt(Neptune_prem.premice_id)

您是否尝试过在 varchar 中使用CAST('abc' AS varchar(5))数字列?

已编辑

您应该使用clng将文本转换为数字...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM