加入项目编号

时间:2015-07-15 12:40:58

标签: sql sql-server sql-server-2012

我尝试根据项目编号连接两个表。在表格'dbo.transactions' projectNR有一个前缀(例如 111 0001'),但不包含在' dbo.Projects'表(例如0001)。

SELECT a.projectNR, b.Description FROM dbo.transactions a 
RIGHT JOIN dbo.Projects b
ON a.ProjectNR = b.ProjectNr

a.ProjectNR(1110001)应该加入b.ProjectNR。我尝试使用STUFF来删除前3个数字,但我不知道如何在内连接中混合它:

Stuff(a.projectNR, 1, 3, '')

2 个答案:

答案 0 :(得分:0)

试试这个

string Pi()
    {
        string a = "3.14159";
        return a;
    }

OR

SELECT a.projectNR, b.Description FROM dbo.transactions a 
RIGHT JOIN dbo.Projects b
ON Stuff(a.projectNR, 1, 3, '') = b.ProjectNr

答案 1 :(得分:0)

SELECT a.projectNR, b.Description 
FROM dbo.transactions a 
  RIGHT JOIN dbo.Projects b ON Stuff(a.projectNR, 1, 3, '') = b.ProjectNr

请记住,这是你能做的绝对最糟糕的事情,根本不会使用任何指数。一旦任何一个表达到较大的规模,您就会等待系统等待此查询。

您可能会有更好的运气:

SELECT a.projectNR, b.Description 
FROM (select *, Stuff(a.projectNR, 1, 3, '') normalprojectnr from dbo.transactions) a 
  RIGHT JOIN dbo.Projects b ON normalprojectnr = b.ProjectNr

但它仍然不会使用任何指数。如果这个增长得足够大,我首先会选择transactions到带有额外列的临时表中,手动应用索引,然后进行连接。