У меня есть следующая таблица.Найти ближайшую совпадающую строку в sql-сервере
TableName: Mask
Columns:
MaskId INT
MaskCode VARCHAR(100)
Если я прохожу ввода в MasKid = 1, то я получаю две записи с разными maskcodes.
select maskcode from mask where maskid=1
G******
G12****
Я хочу найти ближайшую совпадающую строку между этими двумя рядами. Я собираюсь ввести еще один входу, @Maskcode
Сценарий-1:
Теперь я собираюсь передать два входа
MaskId=1, maskcode=G123456
Мой запрос будет что-то вроде этого
select maskcode from mask where maskid=1 and maskcode='G123456'
В этом случае мне нужна строка G12 ****, потому что это самое близкое совпадение между двумя строками.
Сценарий-2:
MaskId=1, maskcode=G999999
В этом случае мне нужно G ***** строку.
Сценарий-3:
Для MasKid = 2 У меня есть две записи ниже
6h****
6h****
Мой вход для этого случая будет MasKid = 2 и Maskcode = 6h1234 мне нужно две строки в этом случае так как мы не можем найти наиболее близкое в этих двух.
Я пробовал ниже, но он возвращает два ряда.
select *From mask
where @Maskcode
like '%'+replace(MaskCode,'*',''+'%'
Просьба представить любые идеи.
Я не могу использовать верх, так как в некоторых случаях мне нужно несколько строк , Я обновил свой вопрос. Проверьте, как достичь сценария-3, а также – StackUser
@StackUser. , , Конечно вы можете. Просто используйте 'TOP (1) WITH TIES'. –