Oracle dump() function is a useful tool for looking into the "real value", not just the displayed. For example, we may be puzzled to see the results of the query below. Message "data analytics" in Record 3 spans two lines.
SQL> select * from tbl_test; ID MESSAGE ---------- -------------------------------- 1 Hello 2 World 3 data analyticsTo find out what is going on, we use dump() function to examine the content of message. On record 3, there is a ASCII character 10 which represents a line new.
SQL> select a.*, dump(id), dump(message) from tbl_test a; ID MESSAGE ---------- -------------------------------- DUMP(ID) ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------------------ DUMP(MESSAGE) ------------------------------------------------------------------------ ------------------------------------------------------------------------ ------------------------------------------------------------------------ 1 Hello Typ=2 Len=2: 193,2 Typ=1 Len=5: 72,101,108,108,111 2 World Typ=2 Len=2: 193,3 Typ=1 Len=5: 87,111,114,108,100 3 data analytics Typ=2 Len=2: 193,4 Typ=1 Len=16: 100,97,116,97,32,10,32,97,110,97,108,121,116,105,99,115To remove the new line, we use replace() function as shown below. Now the display looks much better.
SQL> select id, replace(message, chr(10), '') from tbl_test a; ID REPLACE(MESSAGE,CHR(10),'') ---------- ---------------------------------------------------------------- 1 Hello 2 World 3 data analyticsIn addition to dump(), we can also use function utl_raw.CAST_TO_RAW() as described in post Watch out invisible characters.
2 comments:
what does dump(id) in above query returns in output...?
dump(id) returns
Typ=2 Len=2: 193,2
dump(msg) returns
Typ=1 Len=5: 72,101,108,108,111
Jay
Post a Comment