Zakładając, że nie będziesz mieć ŻADNEJ NEGATYWNEJ LICZBY Musisz rzutować nvarchar na Int dla swojej klauzuli między i ustawić domyślną dla przypadku, gdy nie można go rzutować, jak poniżej:
SELECT *
From Vendor_Value_Table
WHERE (Vendor_Value_Table.Feature_ID in (17,19))
AND(
value_text like 'Dhol Wala$Shahnai Wala'
OR
(SELECT CASE WHEN ISNUMERIC(value_text) = 1 THEN CAST(value_text AS INT) ELSE -1 END) between 0 and 100
)
Wybraliśmy -1 jako wartość domyślną, ponieważ jeśli nie jest w stanie rzutować, klauzula pośrednia musi być zawsze fałszywa.
(ODPOWIEDZI TYLKO NA LICZBY MNIEJSZE NIŻ ZAKRES WEWNĘTRZNY)