如何将字符串映射到MS Access中的表列?

时间:2016-02-03 14:00:15

标签: sql ms-access mapping case string-matching

我需要一个SQL查询来将TableA中列的字符串内容映射到TableB中的一组列。它看起来像这样:

TableA
| ID | Status |
---------------
| 0  | "full" |
| 1  | "part" |
|    |        |

TableB
| ID | full | part |expire|
--------------------------
| 0  | true | false| false|
| 1  | false| true | false|
|    |      |      |      |

我正在使用MS Access,目前这就是我所拥有的:

SELECT * FROM TableA INNER JOIN TableB ON TableA.ID = TableB.ID

根据ID正确匹配两个表。但是,我不知道从哪里开始。假设以下内容添加到TableA:

{ID:2, Status:"Expire"}

如何将其从TableA映射到TableB?理想情况下,这将在1个查询中完成。

非常感谢提前! :)

2 个答案:

答案 0 :(得分:1)

对每列使用IIf()功能。

SELECT ID,
    IIf([Status]='full', True, False) AS [full],
    IIf([Status]='part', True, False) AS [part],
    IIf([Status]='expire', True, False) AS [expire]
FROM Table1

答案 1 :(得分:1)

你的问题不够明确。

如果要从TableA重新创建TableB,请在查询中使用 IIf(expr,truepart,falsepart)函数。 以下示例(添加状态字段 - 您可以将其排除):

Select ID,Status, IIf([Status]="full", true, false) as full, IIf([Status]="part", true, false) as part,IIf([Status]="expire", true, false) as expire from TableA

如果您打算加入这两个表,那么使用LEFT OUTER连接,它将包括TableA中的所有行。在这种情况下,第3行将具有布尔标志的空值,因为没有匹配的行。

SELECT TableA.ID,Status,full,part,expire FROM TableA LEFT JOIN TableB ON TableA.ID = TableB.ID

此致 Bikxs