如果字符是Sql查询中名称的',',如何删除第一个和最后一个字符

时间:2014-10-07 08:30:29

标签: sql sql-server sql-server-2008

我使用下面的查询将两个列值与','组合在一起。

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

现在问题是它使用上面的查询删除所有','我想删除last和first','。

我结合了两列。现在 如果tbl1 .Reason为null则显示输出为“,tbl2.OtherReason”,如果tbl2.OtherReason为null,则输出为“tbl1 .Reason”,

在上述查询之前,我也尝试使用以下查询:

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

谢谢, HITESH

3 个答案:

答案 0 :(得分: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, '')

答案 1 :(得分: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

答案 2 :(得分:0)

如果第二个值不为null,则可以将逗号连接到第一个值:

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