2010年6月21日 星期一

利用T-SQL去除字串最後一個逗號

DECLARE @str varchar(20)
SET @str = 'A,B,C,D,E,'

SELECT @str

--將字串反轉
SET @str = REVERSE(@str)
SELECT @str

--去除逗號
SET @str = CASE WHEN CHARINDEX(',', @str) = 1 THEN STUFF(@str, 1, 1, '') ELSE @str END
SELECT @str

--將字串反轉
SET @str = REVERSE(@str)
SELECT @str

那上面的語法與一般我們利用SUBSTRING(@str, 1, LEN(@str) - 1)有什麼不同?我們利用上面的語法時我們可以不用考慮字串變數的值(如NULL)及長度,改用SUBSTRING(@str, 1, LEN(@str) - 1)時要注意字串變數的長度另外還是要判斷最後一碼是否為逗號。如果讓筆者選擇利用T-SQL或程式來去除最後一個逗號,筆者會傾向程式。

3 則留言:

  1. 讚,真的很特別的解法!
    收下了...

    回覆刪除
  2. @str重複使用兩次的問題貌似無法解決 因為我的@str長 而且會用到 from中的條件 所以不能獨立寫

    回覆刪除
    回覆
    1. 用 Left(@str, len(@str)-1)呢? 不過用Left要小心len = -1的問題, 可以用Case When的方式來處理長度的問題

      刪除