Próbuję zobaczyć z konsoli SQL, co jest wewnątrz Oracle BLOB.
Wiem, że zawiera dość duży tekst i chcę tylko zobaczyć tekst, ale poniższe zapytanie wskazuje tylko, że w tym polu znajduje się BLOB:
select BLOB_FIELD from TABLE_WITH_BLOB where ID = '<row id>';
wynik, który otrzymuję, nie jest taki, jakiego się spodziewałem:
BLOB_FIELD ----------------------- oracle.sql.BLOB@1c4ada9
Więc jakie magiczne zaklęcia mogę zrobić, aby zmienić BLOB w jego tekstową reprezentację?
PS: Po prostu próbuję spojrzeć na zawartość BLOBa z konsoli SQL (Eclipse Data Tools), a nie używać go w kodzie.
Możesz użyć poniższego kodu SQL, aby odczytać pola BLOB z tabeli.
źródło
SQL Developer udostępnia również tę funkcjonalność:
Kliknij dwukrotnie komórkę siatki wyników i kliknij edytuj:
Następnie w prawej górnej części wyskakującego okienka „Wyświetl jako tekst” (możesz nawet zobaczyć obrazy ...)
I to wszystko!
źródło
Jeśli chcesz przeszukiwać tekst, zamiast go wyświetlać, działa to:
źródło
Odpowiedź Barna zadziałała dla mnie z modyfikacją, ponieważ moja kolumna nie jest skompresowana. Szybkie i brudne rozwiązanie:
źródło
Przez jakiś czas walczyłem z tym i zaimplementowałem rozwiązanie PL / SQL, ale później zdałem sobie sprawę, że w Toad możesz po prostu dwukrotnie kliknąć komórkę siatki wyników, a pojawi się edytor z zawartością w tekście. (Jestem na Toad v11)
źródło
W przypadku, gdy twój tekst jest skompresowany wewnątrz bloba za pomocą algorytmu DEFLATE i jest dość duży, możesz użyć tej funkcji, aby go przeczytać
Następnie uruchom wybierz, aby uzyskać tekst
Mam nadzieję, że to komuś pomoże.
źródło
Użyj tego kodu SQL, aby uzyskać pierwsze 2000 znaków z BLOBa.
Uwaga: Dzieje się tak, ponieważ Oracle nie będzie w stanie obsłużyć konwersji BLOB o długości większej niż 2000.
źródło
Możesz spróbować tego:
Jednak byłoby ograniczone do 4000 bajtów
źródło
Pracował dla mnie
źródło
Użyj
TO_CHAR
funkcji.Nawróceni
NCHAR
,NVARCHAR2
,CLOB
, lubNCLOB
dane do zestawu znaków bazy danych. Zwracana wartość to zawszeVARCHAR2
.źródło