Oracle有条件地向数据中添加空格

Oracle conditionally adding spaces into data

我有一个 table 给我的 'incorrect' 数据。数据格式应为:

“000 00000”

有两个 space。 space 的位置对于不同的记录可能不同,因此例如一条记录可能是前面的示例,而另一条可能是“00 00 0000”。问题是数据进来了,在某些情况下只有一个 space。 (所以“000 00000”)。

理想情况下,我喜欢在查询中执行此操作以修复通过更新语句加载的数据。如果这在 oracle 之外更容易完成,那很好,我可以重新加载数据(它是一些数据,大约 400,000 行)。

找到单个 space 并根据需要添加另一个的最简单方法是什么,或者如果已经有两个 space 则不理会它?

我目前正在处理一个查询,将字符串拆分到 spaces,trim 数据然后将它们与 2 spaces 一起放回去....它在测试中表现不佳。

提前致谢!

这里是查找单个 space 记录的查询,请尝试根据需要制作 CASE 语句。

WITH sample_data AS (SELECT '000  00000' value FROM dual UNION ALL
                         SELECT '00  00  0000' value FROM dual UNION ALL
                        SELECT '000 00000' value FROM dual )


Select * from  sample_data where REGEXP_COUNT(VALUE,'[[:space:]]') =1