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

时间:2018-09-25 20:36:28

标签: string oracle replace spaces

我有一张表,上面有一些“不正确的”数据。数据格式应为:

“ 000 00000”

有两个空格。其中不同记录的空间可以不同,例如,一个记录可以是前一个示例,另一个可以是“ 00 00 0000”。问题是数据进入了,在某些情况下只有一个空格。 (因此为“ 000 00000”)。

理想情况下,id喜欢在查询中执行此操作,以修复通过更新语句加载的数据。如果在oracle之外更容易做到这一点,那就可以了,我可以重新加载数据(其中的一些数据,将近40万行)。

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

我目前正在处理一个查询,以将字符串拆分为空格,修剪数据,然后将其全部与2个空格放在一起。...在测试中效果不佳。

谢谢!

1 个答案:

答案 0 :(得分:0)

这是查找单个空间记录的查询,请根据需要尝试执行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