删除SQL Server中的多个尾随字符 - Oracle相当于修剪(尾随)

时间:2016-05-23 19:33:28

标签: sql-server trim trailing

我有一个表,其字段就像一个数组,用于某些前端处理,这是从不同的平面表连接9列的结果。该字段填充为

  

Field1 +','+ Field2 +','+ Field3 +','+ Field4 +','+ Field5 +','+ Field6 +','+ Field7 +','+ Field8 +',' + Field9

如果平面表中的Field4具有值,则字段1,2和3也具有值。但是,大多数时候,字段5 - 9没有值。结果是数组字段中的大多数值(在连接之后)看起来像这样:

  

鲍勃,乔,玛丽,萨姆,,,,,

我正在寻找一种更新此连接字段的简单方法,而不是这样:

Bob,Joe,Mary,Sam

这是Oracle等同于Trim(Trailing',' From FieldValue)

3 个答案:

答案 0 :(得分:3)

我会反过来,找到第一个非逗号字符,然后将它与LEN()和LEFT()

结合使用
split

答案 1 :(得分:1)

如果您只是这样做:

KeyListener

最后会留下一个带有1或0个逗号的字符串,具体取决于是否有偶数或奇数的尾随逗号。

您可以将其包装在SUBSTRING或LEFT结构中,如果它是逗号,则删除最后一个字符。

答案 2 :(得分:0)

创建以下UDF:

CREATE FUNCTION Trailing(@String VarChar(Max), @Char VarChar(5))
RETURNS VarChar(Max)
BEGIN
    RETURN
        Reverse(
        SubString(
        Reverse(@String)
        ,PatIndex('%[^' + @Char + ' ]%',Reverse(@String))
        ,DataLength(@String)
        )
        )
END
GO

给它一个试驾:

SELECT
    'Array_Value_1,Array_Value_2,Array_Value_3,,,,,' AS Original_String,
    dbo.Trailing('Array_Value_1,Array_Value_2,Array_Value_3,,,,,', ',') AS Clean_String
GO