0

次のステートメントを使用する投稿を次に示します

CREATE FUNCTION ValidateExclVehicle_check (
 @vin           CHAR(17),
 @vehicle_type  CHAR(3)
)
RETURNS TINYINT
AS
-- Exists     = 1
-- Not Exists = Null, 0 substituted
RETURN ( 
SELECT COALESCE(1, 0)
 FROM  Vehicle
 WHERE vin          = @vin
 AND   vehicle_type = @vehicle_type 
)

where句が行を返さない場合を除いて、式COALESCE(1,0)が1以外を返す理由がわかりません。この場合、ステートメント全体が行を返さず、合体式の値は無関係です。「0代入」が表示されません。

私が行方不明になっていることが起こっていますか?

4

1 に答える 1

2

仰るとおりです。そのステートメントは、1 または NULL/no 行を返す必要があります。これは、データベース固有の現象である可能性があり、0 が返されると仮定します。

意図は次のとおりだと思います。

return (select (case when count(*) = 0 then 0 else 1 end)
        from Vehicle
        where vin = @vin and vehicle_type = @vehicle_type
       )
于 2012-12-04T22:36:50.577 に答える