これはSQL Server 2008 R2にあります。varchar値 'N'をデータ型intに変換するときに変換に失敗しました
私はこの1つで私の髪を引っ張っています。密接に従ってください。
私はこれを実行すると、私は27行が返されます:
select *
from dbo.[12STD_NO_VISIT]
where (
(dbo.fPhoneExists(PhoneNumber1) = 1
AND (NextCall1 BETWEEN GETDATE() AND DATEADD(hh, 1, GETDATE())))
)
そして、私はこれを実行すると、私は21行が(PhoneNumber2とNextCall2への変化に気付く)返されます:
select *
from dbo.[12STD_NO_VISIT]
where (
(dbo.fPhoneExists(PhoneNumber2) = 1
AND (NextCall2 BETWEEN GETDATE() AND DATEADD(hh, 1, GETDATE())))
)
しかし、私はこれを実行すると、2つの条件を '論理和'、私はエラーを取得する:
Conversion failed when converting the varchar value 'N' to data type int
select *
from dbo.[12STD_NO_VISIT]
where (
(dbo.fPhoneExists(PhoneNumber1) = 1
AND (NextCall1 BETWEEN GETDATE() AND DATEADD(hh, 1, GETDATE())))
OR
(dbo.fPhoneExists(PhoneNumber2) = 1
AND (NextCall2 BETWEEN GETDATE() AND DATEADD(hh, 1, GETDATE())))
)
しかし、それは私にエラーを与えるだけではありません。最初に42行を取り出し、分割した行(結果タブ)を表示して、エラー(メッセージタブ)を表示します。
私はこれを理解することはできません。どんな助けもありがとうございます。
ありがとうございます!
FUNCTION [dbo].[fPhoneExists](@PhoneNumber varchar)
RETURNS BIT
WITH EXECUTE AS CALLER
AS
BEGIN
DECLARE @GoodNumber bit
IF (@PhoneNumber is NULL or @PhoneNumber = 0 or @PhoneNumber = '')
SET @GoodNumber = 0;
ELSE
SET @GoodNumber = 1;
Return(@GoodNumber);
END
両方のクエリを「結合」しようとするとどうなりますか? – Lamak
'fPhoneExists'関数はどのように見えますか? – Magnus
ハ。わかった。 42.本当にすべてに答えます。 –