Значение '%' должно быть удвоено ('%%'), чтобы обозначать буквальный% внутри строки шаблона, которую вы отправили sprintf
или printf
:
$query->andWhere(sprintf('%s.%s LIKE REPLACE (?," ","%%")',
$query->getRootAlias(), $fieldName),
'Mar Sanz'));
Предложение: Почему бы не запустить функцию замены строк внутри кода, прежде чем отправить ее на сервер базы данных?
$query->andWhere(
sprintf(
'%s.%s LIKE ?',
$query->getRootAlias(),
$fieldName
),
preg_replace('/ /', '%', 'Mar Sanz')
);