0

nvarcharSQL Server 2012 を使用して可変長を返すスカラー値関数を作成することはできますか? 可変長と言うときは、関数が任意の長さの を受け入れ、同じ長さのnvarcharを返すようにしたいと考えています。nvarchar

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 で記述しました。ただし、これは、データ型とスペースに非常に注意を払っている場合です (特に 10 進数で、エンタープライズの余裕がない場合)。あなたの目標は何ですか?

于 2013-03-22T22:23:21.057 に答える