我有一个表,其字段就像一个数组,用于某些前端处理,这是从不同的平面表连接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)
答案 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