我正在嘗試ISEMPTY在 Microsoft SQL Server 中撰寫一個簡單的函式:
DROP FUNCTION IF EXISTS ISEMPTY;
GO
CREATE FUNCTION ISEMPTY
(@charsequence nvarchar(max))
RETURNS BIT
AS
BEGIN
DECLARE @result BIT;
IF (@charsequence IS NULL OR LEN(@charsequence) = 0)
SET @result = 1
ELSE
SET @result = 0;
RETURN @result;
END
GO
當我想測驗它時:
SELECT CASE WHEN dbo.ISEMPTY('') THEN 'REACHED!' END;
我收到以下錯誤:
[S0001][4145] 第 1 行:在預期條件的背景關系中指定的非布爾型別的運算式,靠近“THEN”。
這里出了什么問題?
uj5u.com熱心網友回復:
when運算式中需要一個布林值case,但您的函式回傳一個bit.
試試這個:
SELECT CASE WHEN dbo.ISEMPTY('') = 1 THEN 'REACHED!' END;
uj5u.com熱心網友回復:
該函式回傳一個數字,因此您需要與數字進行比較以獲得布林值
CREATE FUNCTION ISEMPTY( @charsequence nvarchar(max)) returns BIT AS begin DECLARE @result BIT; IF (@charsequence IS NULL OR LEN(@charsequence) = 0 ) SET @result = 1; ELSE SET @result = 0; RETURN @result; end
GO
SELECT CASE WHEN dbo.ISEMPTY('') = 1 THEN 'REACHED!' END; GO| (無列名) | | :--------------- | | 到達!|
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/435665.html
上一篇:我怎樣才能把這個總和列印出來呢?
下一篇:計算兩天SQL的ID
