SQL Server: как выбрать ближайший идентификатор записи, ближайшей по алфавиту - PullRequest
0 голосов
/ 24 июня 2019

У меня есть таблица (пример данных ниже) с идентификаторами и названиями компаний.

Пользователи могут ввести поиск для компании.Если этой компании не существует, моей хранимой процедуре необходимо вернуть идентификатор компании, которая будет следующей в алфавитном порядке.

Итак, используя приведенные ниже данные (что является результатом

SELECT Id, CompanyName 
FROM COMPANY 
ORDER BY CompanyName

Если мой пользователь ищет ACM Mechanical Services Inc , он не существует в данных, и идентификатор, возвращаемый хранимой процедурой, должен быть 15410 (ADM Marine), поскольку в алфавитном порядке ACM Mechanical Services Incбудет находиться между ID записи 16616 (элементы управления ACI) и 15410 (ADM Marine).

Какой самый эффективный способ сделать это?

ID      CompanyName
------------------------
12295   A 1 Vending
16638   A B C RENT ALL
 8288   A Best Inc
16616   A C I Controls
15410   A D M Marine
12326   A Granchelli, Developer
 8687   A Greener Solution
13895   A H S Systems, Inc.
10914   A L Design Inc
16943   A L J Electrical Constr Co.
 1099   A Lunt Design Inc.
15623   A M Carpet Service
16618   A M Miller and Associates

1 Ответ

2 голосов
/ 24 июня 2019

Используйте предложение WHERE, которое проверяет, чтобы имя было равно или больше, чем искомое имя. ORDER BY имя ограничивает результат первой записью, используя TOP.

SELECT TOP 1
       *
       FROM elbat
       WHERE companyname >= 'A C M Mechanical Services Inc'
       ORDER BY companyname;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...