Используйте один и тот же поисковый термин, введенный пользователем, для обоих сравнений.Для INT
сначала преобразуйте его в строку.Другой вариант - преобразовать поисковый термин в INT
, но тогда вам потребуется специальная обработка нечисловых значений.
create table Student
( StudentID int,
StudentName nvarchar(80) )
insert into Student ( StudentID, StudentName ) values
( 10123, 'Archimedes' ),
( 74701, 'Beatrice' ),
( 84448, 'Casandra' ),
( 99599, 'Archibald' )
declare @Search nvarchar(80)
set @Search = 'Arch'
select * from Student
where ( StudentName like '%' + @Search + '%' )
or ( cast(StudentID as nvarchar(20)) = @Search )
set @Search = '74701'
select * from Student
where ( StudentName like '%' + @Search + '%' )
or ( cast(StudentID as nvarchar(20)) = @Search )
Если у вас установлен SQL Server 2012 или более поздней версии, выможно использовать Try_Convert
для упрощения.
select * from Student
where ( StudentName like N'%' + @Search + N'%' )
or ( StudentID = Try_Convert(int,@Search) )