4

以前我曾要求从字段中删除文本并将其转换为 int,这可以成功。但是现在,我想对这个新值进行 INNER JOIN。

所以我有这个:

SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) 
AS 'memId',  userDetails.title, userDetails.lname 
FROM accountingTab INNER JOIN
(SELECT id, title, first, last FROM memDetTab) AS userDetails ON memID = userDetails.id

然后我得到 Invalid Column NamememID错误。

我怎样才能解决这个问题?

4

3 回答 3

6

您可以重复整个表达式或反转您的联接:


SELECT *
FROM memDetTab
    JOIN (SELECT CONVERT(int, SUBSTRING(accountingTab.id, PATINDEX('%[0-9]%', accountingTab.id), 999)) AS 'memId', userDetails.title, userDetails.lname
FROM accountingTab) subquery
    ON subquery.memID = memDetTab.ID
于 2008-09-22T11:09:47.870 回答
2

代替 memId,重复整个表达式。

于 2008-09-22T11:02:23.550 回答
0

如果你必须这样做,你就有设计问题。如果可以的话,我建议您需要重构您的表格或关系。

于 2008-09-22T11:05:48.800 回答