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