0

関数 (usr.udf_overpunch) を使用して特殊文字を数値に変換するクエリを作成しています。関数の入力データに使用されるパラメータ @incomming として col4 の結果を設定するにはどうすればよいですか?

declare @incomming nvarchar(15)
drop table #tempgb
SELECT *
into #tempgb
  FROM [AdhocTeamC].[dbo].[R0530135.RPT.SPON_INVOICE]
where substring(col1, 1,5) = 'TPAMT'

select col1,
substring(col1, 1,5) as col2,
substring(col1, 38,5) as col3,
@incomming = substring(col1, 78,14) as col4,
[usr].[Udf_OverPunch] (@incomming) as Overpunch
from #tempgb
4

1 に答える 1

0

@incomming = ...代入 ( ) と通常の を混在させることはできませんSELECTsubstring(col1, 78, 14)2 度の失敗から身を守ろうとしているようです。その場合は、これを試してください:

;WITH CTE AS (
    SELECT
        col1,
        SUBSTRING(col1, 1, 5) AS COL2,
        SUBSTRING(col1, 38, 5) AS COL3,
        SUBSTRING(col1, 78, 14) AS COL4
    FROM
        #tempgb
)
SELECT
    *,
    usr.Udf_OverPunch(col4) AS Overpunch
FROM
    CTE;

2 回送信してもかまわない場合はsubstring(col1, 78, 14)、直接送信して CTE を保存してください。

SELECT
    col1,
    SUBSTRING(col1, 1, 5) AS COL2,
    SUBSTRING(col1, 38, 5) AS COL3,
    SUBSTRING(col1, 78, 14) AS COL4,
    usr.Udf_OverPunch(SUBSTRING(col1, 78, 14)) AS Overpunch
FROM
    #tempgb
于 2013-09-19T18:55:30.087 に答える