[英]Join to table-valued function in MSSQL 2000?
我有一张全名的桌子。 我有一个函数,该函数接收所说的名称,对其进行解析,然后返回带有第一个,中间,最后一个和后缀的表。 我有一个bad
(编辑:是“超级保守”的)DBA,他不会将开发服务器升级到与生产服务器相同的版本,所以我不能只使用APPLY并完成它:
insert into blah (name, firstName, middleName, lastName, suffix)
select a.name, b.firstName, b.middleName, b.lastName, b.suffix
from employees a CROSS APPLY dbo.parseName(a.name) b
请帮忙,否则我将被迫编写如下代码:
insert into blah (name, firstName, middleName, lastName, suffix)
select
name, dbo.getNamePart(name, 'f') as firstName,
dbo.getNamePart(name, 'm') as middleName,
dbo.getNamePart(name, 'l') as lastName,
dbo.getNamePart(name, 's') as suffix
from employees r
听起来“ dev”和“ live”使用不同的版本? 在您的开发/生产服务器上不使用同一产品是一种责任 。 “保守的” DBA应该希望他们匹配...
我不清楚-您是在编写 “返回具有第一个,中间,最后一个和后缀的表”或使用它的函数。 如果正在使用它,则应该只能够从UDF中进行SELECT
,或者将其JOIN
到该表中,依此类推。IIRC,您只需对UDF进行别名,就像创建一个表一样:
...
from dbo.myTableUdf(...) x
inner join SomeTable y on x.id = y.id
如果UDF不在处理其他表中的数据,则可以加入其中。 也就是说,您可以这样编写:
select name, b.EXPANSION
from employees a
join dbo.parseName('John Smith') b
on a.CODE = b.CODE
但这仅仅是因为myFunc没有引用tb1中的任何字段。 这就是APPLY的创建目的。
从我的角度来看,您有三种选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.