Adding @k1sul1's suggestion from the comments as it's more concise than what I had before:
I just wanted them all gone, so I ran this in the MySQL shell.
UPDATE wp_posts SET post_content = REGEXP_REPLACE(post_content, "\\[\/?vc(.*?)\]", "");
Note the double backslash. If you forget it, you'll replace all v's and c's with nothing, and the shortcodes will still be there. This works for other shortcode as well, just replace vc.
Take a backup beforehand.
Hi @Jany-M - my method before was more manual as I would dump the SQL and fix it while migrating the site:
https://gist.github.com/gemmadlou/7a0189bfae6c2c7268de12f1de822b8a/210503ff67d9c1d220a8d69acbfc3479eca4b64f
Maybe a mixture of pure REGEXP with REPLACE can help?
https://dev.mysql.com/doc/refman/5.6/en/regexp.html