Oracle условно добавляет пробелы в данные - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть таблица, которая была передана мне с некоторыми «неправильными» данными.Формат данных должен быть:

"000 00000"

Есть два пробела.ГДЕ пробелы могут быть разными для разных записей, поэтому, например, одна запись может быть предыдущим примером, а другая - «00 00 0000».Проблема в том, что данные поступали, в некоторых случаях только с одним пробелом.(так "000 00000").

В идеале, id хотел бы сделать это в запросе, чтобы исправить данные, которые были загружены с помощью оператора обновления.Если это легче сделать вне оракула, это нормально, я могу перезагрузить данные (их немного, почти 400 000 строк).

Какой самый простой способ найти единое пространство идобавить другой, если необходимо, или оставить его в покое, если уже есть два пробела?

В настоящее время я работаю над запросом, чтобы разбить строку на пробелы, обрезать данные, а затем сложить все обратно вместе с двумя пробелами.... в тестировании не все получается.

Заранее спасибо!

1 Ответ

0 голосов
/ 26 сентября 2018

здесь запрос для поиска одной записи пробела, попробуйте сделать оператор 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     
...