0
在功能我想檢查傳入的值是否等於預定值(@ValX)
我已經寫了以下功能:
比較兩個nvarchar的一個函數
ALTER Function IsNotInReview(@Val NVARCHAR(MAX))
RETURNS BIT
AS
BEGIN
DECLARE @ValX NVARCHAR(MAX)
SET @ValX = '
{
"httpCode" : 200,
"message" : "OK",
"result" : {
"items" : {
"items" : [ ]
}
}
}
'
IF LTRIM(RTRIM(@Val)) = LTRIM(RTRIM(@ValX))
BEGIN
RETURN 1
END
ELSE
BEGIN
RETURN 0
END
RETURN 0
END
當我測試調用功能,我總是得到錯誤的值
SELECT dbo.IsNotInReview('
{
"httpCode" : 200,
"message" : "OK",
"result" : {
"items" : {
"items" : [ ]
}
}
}
')--should return true
SELECT dbo.IsNotInReview('test')
UPDATE
我已經更新了我的SP,但仍然獲得相同的'假'返回值
ALTER Function IsNotInReview(@Val NVARCHAR(MAX))
RETURNS BIT
AS
BEGIN
DECLARE @ValX NVARCHAR(MAX)
SET @ValX = '
{
"httpCode" : 200,
"message" : "OK",
"result" : {
"items" : {
"items" : [ ]
}
}
}
'
DECLARE @ReturnVal BIT
IF LTRIM(RTRIM(@Val)) = LTRIM(RTRIM(@ValX))
BEGIN
SET @ReturnVal = 1
END
ELSE
BEGIN
SET @ReturnVal = 0
END
RETURN @ReturnVal
END
SELECT dbo.IsNotInReview('{
"httpCode" : 200,
"message" : "OK",
"result" : {
"items" : {
"items" : [ ]
}
}
}') --Return false which is unexpected
改變你如果'IF LTRIM(RTRIM(@val))= LTRIM(RTRIM(@ValX)) RETURN 1 ELSE \t返回0 \t回1' – 2014-09-04 05:16:03
我複製你的代碼在我的數據庫,可以看到它返回 '1' 的預期。 – Maas 2014-09-04 05:17:50
嘗試從你的功能夥伴中刪除最後一個RETURN 0;) – Farrokh 2014-09-04 05:41:39