這是在SQL Server 2008 R2中。將varchar值「N」轉換爲數據類型時轉換失敗int
我正在用這個拉我的頭髮。請密切關注。
當我跑,我得到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
如果你嘗試'UNION'這兩個查詢會發生什麼? – Lamak 2012-04-18 18:03:11
'fPhoneExists'函數看起來像什麼? – Magnus 2012-04-18 18:03:55
哈。我現在明白了。 42.確實回答一切。 – 2012-04-18 18:15:08