У меня есть колонка varchar.Содержит значения, разделенные точкой с запятой (;).
Например, это выглядит как
10; 20; 21; 17; 20; 21; 22;
Это не всегда 7 элементов.Он может содержать что-то от 30 до 70. Причина, по которой они разработали его таким образом, заключается в том, что значения на самом деле являются сегментами генома, и имеет смысл вводить или извлекать его коллективно
Мне нужно удалить записи с дублирующимися столбцами,поэтому, если я вижу другую запись с таким же значением, как указано выше, мне нужно удалить ее.
Мне также нужно удалить запись, если она содержит те же значения в другой записи.Например, мне нужно удалить
10 ;; 21; 17; 20; 21; 22;
, потому что он такой же, как первый, но неиметь второе значение 20. Если оно будет более полным, чем первое, вместо него я удалю первое.
1;2;3;4;5;6;7;
и 1;2;3;4;5;6;7;8;
- дураки, и я беру второй, потому что он более полный.1;2;3;4;5;6;;7
также является дубликатом.В этом случае, если у них есть 13 или более совпавших чисел и нет несоответствия, мы объединяем их, чтобы оно стало единым значением 1;2;3;4;5;6;7;7;
.
Я могу сканировать каждую запись в Java, но я боюсь, что этобудет сложным и трудоемким, учитывая, что таблица содержит миллионы записей.Мне было интересно, если это выполнимо в самом оракуле.
Моя последняя цель - вычислить частоту появления этих чисел.Например, если число 10 появляется 5 из 100 раз, это будет 5%.Расчет будет простым.Тем не менее, я не могу рассчитать это, если я не убедился, что в таблице нет дубликатов.