SQL Server 2012
関数を使用するテーブルに 3 つの列があります。'[usr].[Udf_OverPunch]'. および部分文字列。
これが私のコードです:
[usr].[Udf_OverPunch](SUBSTRING(col001, 184, 11)) as REPORTED_GAP_DISCOUNT_PREVIOUS_AMOUNT
この機能は、私が必要としていることに適切に機能します。基本的には、データ辞書に基づいて記号や文字を指定の数字に変換しています。
私が抱えている問題は、先行ゼロがあることです。先行ゼロについて質問しましたが、シンボルを int に変換できないため、関数列でそれを行うことはできません。
これは、他の列のコードで先頭のゼロを取り除くために使用しているものです (ただし、ゼロを 1 つ残します)。
cast(cast(SUBSTRING(col001, 217, 6) as int) as varchar(25)) as PREVIOUS_REPORTING_PERIOD
これは、'000000' の値を 1 つの '0' に、または '000060' の値を '60' に変換する場合にうまく機能しますが、(int に変換しようとした場合) 記号または文字が原因で、関数では機能しません。
前述したように、関数が使用されていないときに次のような値を生成する 3 つの列があります。
'0000019753{'
'0000019748G'
'0000019763H'
ここでの私の目標は、先頭のゼロも削除しながら関数を使用することです (それらがすべてゼロである場合を除き、1 つのゼロを保持します)。
これは、値に整数ではない文字が含まれているため、機能しないことを試みたものです。
[usr].[Udf_OverPunch]cast(cast(SUBSTRING(col001, 184, 6) as int) as varchar(25)) as REPORTED_GAP_DISCOUNT_PREVIOUS_AMOUNT,
何かアイデアがある場合や、さらに情報が必要な場合はお知らせください。:)