I know that it is not recommended way to work with content.
Anyway - I have to do kind of String.Replace over the content of 1000+ pages. The guys had idea to use DB directly to make it as a fast and easy update.
I am simply replacing one string by another in the [tblContentProperty] table. After the caches drop (no IIS restart, etc.) - everything looks fine and you can see the new content there.
However, afterwars there could be performed some actions (by Content Editors or Scheduled Jobs) that may publish content on those pages. And the string gets reverted back even if it was not touched by those actions.
Have a feeling that chanign the [tblWorkContentProperty] in parallel fixes the issue...
So basically [tblContentProperty] updates only published content so the data will survive until the next publish. When you see the page in edit mode - the old content will be shown.
To do a correct replacement - you have to update both [tblContentProperty] for published content and [tblWorkContentProperty] for drafts.