0

nvarchar是否可以使用 SQL Server 2012创建一个返回可变长度的标量值函数?当我说可变长度时,我希望函数接受nvarchar任意长度的 an 并返回nvarchar相同长度的 an。

我正在尝试创建一个辅助函数,nvarchar在将它们放入我们的数据仓库之前使用视图清理列。我很确定这是不可能的,如果我错了,请纠正我。

我当前的功能(由于截断等原因显然无法正常工作):

create function dbo.fnClean (@input nvarchar)
returns nvarchar as
begin
    declare @return nvarchar

    set @return = ltrim(rtrim(@input))

    return @return
end
4

2 回答 2

1

不,这是不可能的(并且您需要动态 SQL 来创建列或在另一侧以这种方式进行转换)。但是,如果您事先知道长度是多少,那么您可以单独跟踪它而不是依赖函数。或者使用返回@input AND LEN(@input)的表值函数。

最后,如果这就是这个函数所做的一切,那将是非常昂贵的。您从中获得了什么,而不是仅仅应用LTRIM(RTRIM())到输入而不需要创建或引用函数?标量函数对性能来说并不是很好。

于 2013-03-22T22:14:41.943 回答
0

这是行不通的,尽管我会质疑目标 nvarchar 或 varchar 是否已经占用了变量空间......我已经在 ETL 中编写了脚本来计算最大数据类型并缩放列结果。但是,这是如果您对数据类型和空间非常谨慎(特别是十进制并且没有企业的奢侈品)。你的目标是什么?

于 2013-03-22T22:23:21.057 回答