我尝试根据项目编号连接两个表。在表格'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, '')
答案 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
到带有额外列的临时表中,手动应用索引,然后进行连接。