Функции для каждой строки в запросах SQL всегда плохая идея для таблиц, которые могут стать большими. Если вы хотите выполнить поиск по части столбца, он должен быть извлечен в отдельный столбец и проиндексирован.
Я бы предложил, если у вас есть власть над схемой (в отличие от процесса заполнения), вставить новые столбцы с именами OwnersFirstName и OwnersLastName вместе с триггером обновления / вставки, который извлекает соответствующую информацию из OwnersName и заполняет новые столбцы соответствующим образом .
Это означает, что затраты на выяснение имени выполняются только при изменении строки, а не каждый раз , когда вы запускаете запрос. Это подходящее время, чтобы сделать это.
Тогда ваши запросы становятся ослепительно быстрыми. И да, это нарушает 3NF, но большинство людей не понимают, что это нормально делать по соображениям производительности, при условии, что вы понимаете последствия. И так как новые столбцы управляются триггерами, дублирование данных, которое могло бы вызвать беспокойство, является «чистым».
Большинство проблем, с которыми люди сталкиваются с базами данных, это скорость их запросов. Обычно можно сэкономить немного дискового пространства, чтобы повысить производительность.
Если у вас абсолютно нет власти даже над схемой, другая возможность - создать собственную базу данных с «правильной» схемой и периодически заполнять ее из реальной базы данных. Тогда запросите свой. Однако это может включать в себя значительную часть передачи данных каждый месяц, поэтому первый вариант - лучший, если это разрешено.