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.
I still have an additional follow-up question. How to construct a regex query to MySQL to replace The7 VC gallery shortcodes to classic WP gallery:
From this:
[dt_gallery_masonry mode="grid" bwb_columns="desktop:2|h_tablet:2|v_tablet:2|phone:2" gap_between_posts="10px" image_border_radius="12px" image_scale_animation_on_hover="disabled" image_hover_bg_color="disabled" show_zoom="n" include="6205,6206,6207,6208,6209,6210" css_dt_gallery=".vc_custom_1664369671640{margin-bottom: 30px !important;}"]
to this:
[gallery size="medium" columns="2" ids="6205,6206,6207,6208,6209,6210"]
The idea is to keep and move the value of the 'include' parameter from dt_gallery_masonry to the 'ids' parameter in gallery.
I'll try this:
UPDATE wp_sandbx_posts SET post_content = REGEXP_REPLACE(post_content, '(\[\/?dt_gallery_masonry)(.*?)(include\=\")(.*?)(\")(.*?)(\])', '[gallery size=\"medium\" columns=\"2\" ids=\"$4\"]');
But something is wrong.