Wiem, że Oracle ma TRIM
i chciałbym go użyć do przycięcia białych znaków z pola w jednym z moich tabel.
Takie jak:
update THIRD_PARTY_ADRS_INFO_TEMP
set HOUSE_NO = TRIM(HOUSE_NO);
po prostu zawiesza się, gdy próbuję uruchomić go w SQL Developer.
Próbowałem też TRIM(" " from HOUSE_NO)
i REPLACE(HOUSE_NO," ","")
wszystko z tym samym efektem
Wygląda na to, że powinno być naprawdę proste ...
pomysły?
Odpowiedzi:
3 dla odpowiedzi № 1Jeśli to "zawiesza się", to sugeruje, że twojesesja jest blokowana przez inną sesję. Próbujesz zaktualizować każdy wiersz w tabeli; jeśli inna sesja zablokowała wiersz w tej samej tabeli i jeszcze nie została zatwierdzona, twoja sesja będzie musiała poczekać.
2 dla odpowiedzi nr 2
Cieszę się, że rozwiązałeś blokadę rzędu. Jeśli chodzi o usuwanie wszelkiego rodzaju pustych przestrzeni, możesz również sprawdzić REGEXP_REPLACE, jeśli korzystasz z najnowszej wersji Oracle. Jest nieco wolniejszy od przycinania, ale jeśli masz do czynienia z wieloma możliwymi niedrukowalnymi postaciami, warto się przyjrzeć.
na przykład
select regexp_replace(x,"[[:space:]|[:blank:]|[:cntrl:]]*$","")
from (select "ad f cde "||chr(10)||chr(13)||chr(8)||" " as x from dual);
1 dla odpowiedzi nr 3
Ile rzędów w twoim stole? Możesz spróbować po prostu wybrać raczej niż aktualizację (na przykład z rownum <10) tylko po to, aby upewnić się, że działa.