вы можете предварительно вычислить РАЗНИЦУ () всех ваших имен и сохранить их в виде таблицы:
Differences
Name1
Name2
Difference
INSERT INTO Differences
(Name1,Name2,Difference)
SELECT
n1.Name,n2.Name,DIFFERENCE(n1.Name,n2.Name)
FROM Names n1
CROSS JOIN Names n2
WHERE DIFFERENCE(n1.Name,n2.Name)<??? --to put a cap on what to store
и если пользователь вводит одно из ваших существующих имен, вы очень быстро получаете разницу. Если пользователь вводит имя, которого нет в вашей таблице имен, вы можете выполнить свой вариант A или B. Вы даже можете указать им «разницу» в списке выбора. Ноль будет вашим вариантом A, а любое значение будет использовать опцию B, сначала пытаясь использовать таблицу различий, а затем сканирование таблицы перебором WHERE DIFFERENCE(@givenName,Names.Name)<@UserSelectLevel