3 回答

TA貢獻1851條經(jīng)驗 獲得超4個贊
如果值被傳遞為 as NULL
,那么您可以簡單地執(zhí)行以下操作:
SET AboutMe = COALESCE(@AboutMe, About_me)
如果它們可以是NULL
或空白,那么您可以使用顯式CASE
:
SET AboutMe = (CASE WHEN @AboutMe IS NULL OR LTRIM(@AboutMe) = '' THEN Aboutme ELSE @AboutMe END)

TA貢獻1827條經(jīng)驗 獲得超8個贊
CASE如果變量IS NULL或空字符串或只是空格,您可以使用自身替換值。否則使用變量的值。這是可能的例如通過使用的組合ltrim(),isnull()并為空字符串的比較。
UPDATE [Users_Table]
SET [User_name] = CASE
WHEN ltrim(isnull(@User_name, '')) = '' THEN
[User_name]
ELSE
@User_name
END,
[About_me] = CASE
WHEN ltrim(isnull(@AboutMe, '')) = '' THEN
[About_me]
ELSE
@AboutMe
END,
[City] = CASE
WHEN ltrim(isnull(@City, '')) = '' THEN
[City]
ELSE
@City
END
WHERE [UserID] = @ID;

TA貢獻1864條經(jīng)驗 獲得超2個贊
我認為您也想“忽略”,''但問題是這不是NULL.
嘗試這個:
CREATE PROC UpdateMy
@User_name nvarchar(15),
@AboutMe nvarchar(150),
@City nvarchar(21),
@ID int
AS
BEGIN
UPDATE Users_Table
SET
[User_name] = CASE WHEN ISNULL(@User_name, N'') = N'' THEN [User_name] ELSE @User_name END,
[About_me] = CASE WHEN ISNULL(@AboutMe, N'') = N'' THEN [About_me] ELSE @AboutMe END,
[City] = CASE WHEN ISNULL(@City, N'') = N'' THEN [City] ELSE @City END
WHERE [UserID] = @ID;
SELECT * FROM Users_Table WHERE [UserID] = @ID;
END
GO
- 3 回答
- 0 關注
- 240 瀏覽
添加回答
舉報