[SQL ] NILL和''判斷
資料庫名稱:MSSQL
資料庫版本:2012
內容/問題描述:
在做一個找資料的function F1
ALTER FUNCTION F1(
@parm1 varchar(9),
@parm2 varchar(9)
)
中略
SELECT 1 FROM T WHERE
PARM1 = @parm1 and
PARM2 = @parm2
後略
但是後來發現PARM1和PARM2中有''也有NULL
而前端傳來的@parm1和@parm2也不保證不會有人刻意把''處理成DBNull.Value
所以WHERE條件變成
(PARM1 = @parm1 or
PARM1 is null and @parm1 = '' or
PARM1 = '' and @parm1 is null or
PARM1 is null and @parm1 is null) and
(PARM2 = @parm2 or
PARM2 is null and @parm2 = '' or
PARM2 = '' and @parm2 is null or
PARM2 is null and @parm2 is null)
然後其實變數是PARM1~到PARM11
整串變得超級長
我想說中間重覆的部份可以寫成一個FUNCTION
ALTER FUNCTION F2
(
@str1 varchar(MAX) = null,
@str2 varchar(MAX) = null
)
RETURNS bit
AS
BEGIN
RETURN CAST (
CASE WHEN
@str1 = @str2 or
@str1 is null and @str2 = '' or
@str1 = '' and @str1 is null or
@str1 is null and @str2 is null
THEN 1
ELSE 0
END
as bit)
END
然後腦袋就卡住了
直覺在F1中call F2就不是個好方法
請問有什麼別的解嗎感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.75.101.50
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1485229543.A.395.html
※ 編輯: hirabbitt (211.75.101.50), 01/24/2017 11:46:23
推
01/24 11:48, , 1F
01/24 11:48, 1F
→
01/24 11:49, , 2F
01/24 11:49, 2F
→
01/24 11:49, , 3F
01/24 11:49, 3F
→
01/24 11:49, , 4F
01/24 11:49, 4F
→
01/24 11:53, , 5F
01/24 11:53, 5F
推
01/24 15:10, , 6F
01/24 15:10, 6F
→
01/24 15:10, , 7F
01/24 15:10, 7F
→
01/24 15:11, , 8F
01/24 15:11, 8F
→
01/24 15:19, , 9F
01/24 15:19, 9F
Database 近期熱門文章
PTT數位生活區 即時熱門文章