Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come usare tra la clausola su un nvarchar?

Supponendo che tu non abbia ALCUN NUMERO NEGATIVO Devi eseguire il cast di nvarchar su Int per la tua clausola tra e impostare un valore predefinito per il caso non è possibile eseguire il cast come di seguito:

 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
 )

Abbiamo scelto -1 come predefinito perché se il cast non è in grado di numerare la clausola between deve essere sempre falso.

(RISPONDERÀ SOLO PER I NUMERI INFERIORI A INT RANGE)