Следующее может дать вам несколько указателей для начала.
SELECT MAX(StringField)
FROM YourTable
WHERE StringField < Candidate
UNION ALL
SELECT MIN(StringField)
FROM YourTable
WHERE StringField > Candidate
Чтобы извлечь всю запись (и предполагая, что ваши StringFields уникальны), вы можете заключить это в подзапрос.
SELECT *
FROM YourTable yt
INNER JOIN (
SELECT StringField = MAX(StringField)
FROM YourTable
WHERE StringField < Candidate
UNION ALL
SELECT MIN(StringField)
FROM YourTable
WHERE StringField > Candidate
) yts ON yts.StringField = yt.StringField
Примечание. Одной из оптимизаций может быть сравнение всех прописных (или строчных) символов, чтобы Andy & ANDY имели одинаковый вес.