What larger companies can do is access the Visa Account Updater or the Mastercard Automatic Billing Updater. These are services that allow the merchant to submit card numbers and get updated information. Basically, the merchant sends a list of cards, and gets a report back. For each card submitted, the response is one of:
1. No response. The card never shows up in a returned report.
2. Notification that no updated information is available.
3. Notification that the account is closed.
4. Notification that the account has a new number and/or expiration date, and those are provided.
The fees for this are surprisingly cheap. One of them has a one-time sign up fee of a couple hundred bucks, and the other has no sign up fee. After that, it is something like $0.10 per card that results in updated information. No charges that come back with no updates or do not get a response.
I suspect this has surprised a lot of people whose bank changes their card number every three years, and so thought that they could just not bother canceling some subscription service because the old number would stop working.