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
我有一个 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