Просто чтобы уточнить, почему ваш оригинальный SQL не работает;
Вам необходимо объединить подстановочный знак% со значением параметра, но вы создали буквальную строку, содержащую подстановочный знак и имя параметра, например,
Work_Phone Like '%@WorkPhone'
должно быть записано как
Work_Phone Like '%' + @WorkPhone
SQL, который у вас есть, должен работать, если вы возвращаете пустую строку для параметров, для которых не введено значение (т. Е. Вы возвращаете "", а не NULL) - сравнение Like для этих полей будет содержать только % подстановочный знак (то есть соответствует любому значению). Однако это не очень эффективно, так как в идеале вы хотите сравнивать только те поля, в которые пользователь ввел значение. Это, вероятно, потребует некоторого динамически генерируемого SQL, как показано в статье, на которую ссылается kenj.
Если ваша таблица tblClient не такая большая, то того, что вы сделали, может быть достаточно.