No, that's pretty much what they're doing. Now, if there is not a leading wildcard and the field is indexed, which is the usual situation, the database engine can apply the regular expression to the index. So, for example, if you write
WHERE last_name LIKE 'Cav%'
the database can use the index on
LAST_NAME to find all the rows where the last name begins 'Cav'. On the other hand, if you had something like
WHERE last_name LIKE '%av%'
the database would have to scan the entire table (or the entire index) and evaluate the expression against the full
LAST_NAME value. Obviously, that's very expensive.
Most of the better relational databases have facilities to do full-text search in a more efficient manner by constructing different sorts of indexes and text catalogs but these don't use the LIKE keyword. For example, here's a nice article that discusses full-text search in PostgreSQL.