是否可以INNER JOIN 2 id的不同类型/值?

Nic*_*las 2 sql sql-server join inner-join

正如标题所说,我正在尝试使用INNER JOIN具有不同值/数据类型的列.

在一个数据库表中,我们称之为表AI我想做一个select语句来获取几列(Subject,Name,Description,Date)的值.虽然我也想要一个关系名称.但问题是关系名称(在关系表中设置,表B)在表A中显示为字符串值(D0001001) - 因此不是文字名称.

为了获得文字关系名称,存在与表B的链接,其具有ID列1001-1000~和关系'文字'名称列.因此,例如在表B中,ID 1001匹配公司名称MC DONALDS,在表A中,RelationID是D0001001(MC DONALDS).

不要问我为什么表A中的RelationID与它前面的奇怪D000有关,我不知道,但它有一些功能.

所以回到问题所在.我想从表A中获取一些字段,但也要从表B中获取文字关系名称,它与表A的relationID值匹配.

所以问题是,我如何才能INNER JOIN对这两种不同的值/类型进行研究?RelationID在表A中是字符串类型(nvarchar确切地说),在表B中ID,匹配关系名称是一种Integer类型.

我以为我可以解决它:

  1. 在查询中执行LIKE语句,其中表B(1001整数)的ID部分匹配表A的RelationID(D0001001字符串).然而,这不起作用

  2. REPLACE通过替换RelationID'D000'值来做一个声明:"".对于表A值,这可能仍然需要某种类型的强制转换为整数.这里有一些错误可能是因为语法错误.

到目前为止我所拥有的:

SELECT 
    TableA.subject, TableA.Name, TableA.Description, TableA.Date, 
    TableB.RelationName 
INNER JOIN 
    TableB ON TableA.RelationID = TableB.ID
Run Code Online (Sandbox Code Playgroud)

这返回了一个不可能的转换(字符串/整数).

那么我试过:

SELECT 
    TableA.subject, TableA.Name, TableA.Description, TableA.Date, 
    TableB.RelationName 
INNER JOIN 
    TableB ON TableB.ID LIKE '% TableA.RelationID  %'
Run Code Online (Sandbox Code Playgroud)

这也不起作用(EOF).

为了让我的表格更清晰:

表A + ------------ + ----------- + ------------------ + --- ------------------ + ----------- + | RelationID | 主题| 说明| 名称| 日期| + ------------ + ----------- + ------------------ + ----- ---------------- + ----------- + | D0001001 | 快餐| 一些描述| 填料名称| 13-3-2015 | | D0001002 | 饮料| 一些描述| 填料名称| 10-3-2015 | | D0001003 | 汽车| 一些描述| 填料名称| 7-3-2015 | + ------------ + ----------- + ------------------ + ----- ---------------- + ----------- +

表B.

+------+--------------+
|  ID  | RelationName |
+------+--------------+
| 1001 | MC DONALDS   |
| 1002 | COCA COLA    |
| 1003 | MERCEDES     |
+------+--------------+
Run Code Online (Sandbox Code Playgroud)

- > INNER连接ID和RelationID

任何替代品?提前致谢!

Pரத*_*ீப் 5

从皈依误差逸出去除第一字符RelationID使用Substring然后convertRelationIDINT然后JOINID在塔tableA

SELECT TableA.subject,
       TableA.Name,
       TableA.Description,
       TableA.Date,
       TableB.RelationName
FROM   tableA
       INNER JOIN TableB
               ON CONVERT(INT, Substring(TableA.RelationID, 2, Len(TableA.RelationID))) = TableB.ID 
Run Code Online (Sandbox Code Playgroud)