2014-10-07 83 views
0

我使用下面的查詢將兩個列值與','結合起來。如何刪除第一個和最後一個字符,如果在Sql查詢中的字符是','

SELECT  
RTRIM(LTRIM(REPLACE(
IsNull(tbl1 .Reason,'') + ',' + IsNull(tbl2.OtherReason,''),',' ,''))) 
FROM tbl1 
    LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId 

現在的問題是,它使用上面的查詢刪除所有',',我想只刪除最後和第一','。

我已經結合了兩列。現在 如果TBL 1。原因爲null,則它顯示輸出「 tbl2.OtherReason」如果tbl2.OtherReason是空的輸出是「TBL 1。原因,」

上面的查詢之前,我還與下面的查詢嘗試:

SELECT 
IsNull(tbl1.Reason,'') + ',' + IsNull(tbl2.OtherReason,'') 
FROM tbl1 
    LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId 

感謝, HITESH

+0

你是說'tbl1.Reason'可能以逗號開頭,你想刪除它嗎? – DavidG 2014-10-07 08:31:47

+0

爲什麼不分別用''在第一列和第二列中替換''','然後用''CONCAT'替換'''?從SQL Server 2008開始,'CONCAT'函數不存在,但您可以追加字符串如「Reason +」,「+ Reason2」 – 2014-10-07 08:34:23

回答

0

試試這個:

SELECT 
CASE 
    WHEN tbl1.Reason IS NULL 
    THEN 
     CASE 
      WHEN tbl2.Reason IS NULL 
      THEN '' 
      ELSE LTRIM(RTRIM(tb2.Reason)) 
     END 
    ELSE tbl1.Reason + 
     CASE 
      WHEN tbl2.Reason IS NULL 
      THEN '' 
      ELSE ',' + LTRIM(RTRIM(tb2.Reason)) 
     END 
END 
FROM tbl1 
LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId 
0

可以在情況下塞康連接一個逗號的第一個值d值不爲空:

SELECT  
     IsNull(tbl1.Reason + case when tbl2.OtherReason is null then '' else ',' end, '') + 
     IsNull(tbl2.OtherReason,'') 
FROM tbl1 
    LEFT JOIN tbl2 ON tbl2.OtherReasonId = tbl1.ReasonId 
1

您可以使用中間的情況來檢查值是否爲空。

declare @a nvarchar(5) 
     ,@b nvarchar(5) 
set @a = 'abc' 
set @b = null--'123' 
select isnull(@a, '') + case when @a is not null and @b is not null then ',' else '' end + isnull(@b, '') 
相關問題