read -r row will do word splitting by space/tab/new-line. Because the text field from table contains new-lines, word splitting would cut your text result. In this situation it's hard to avoid it.
I recommend you should replace the new-line to another mark, e.g. ### or just
", 'new-line')(I am not familiar with sql REPlACE function) in SQL, then get result from shell, then use
'} to convert the new-line back.