Чем ближе вы можете получить что-то похожее на IN
для:
SELECT u.*
FROM Users AS u
WHERE u.Username LIKE 'Mar%'
OR u.Username LIKE 'Ant%'
OR u.Username LIKE '%Geo%'
OR u.Username LIKE '%arc' ;
является использование (проприетарного к SQL- Server) CROSS APPLY
:
SELECT u.*
FROM Users AS u
CROSS APPLY
(SELECT TOP (1) v.val
FROM (VALUES
('Mar%'), ('Ant%'), ('%Geo%'), ('%arc')
) AS v (val)
WHERE u.Username LIKE v.val
) AS x ;
Испытано на SQL-Fiddle
Одним из преимуществ, которые вы не можете сделать с IN
или LIKE ... OR
является то, что вы можете иметь строки из основной таблицы возвращается более чем один раз, если у них есть больше, чем один матч:
SELECT u.*, x.val AS MatchingString
FROM Users AS u
CROSS APPLY
(SELECT v.val
FROM (VALUES
('Mar%'), ('Ant%'), ('%Geo%'), ('%arc')
) AS v (val)
WHERE u.Username LIKE v.val
) AS x ;
СООТВЕТСТВЕННО, да и нет. –