sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo usar la cláusula between en un nvarchar?

Suponiendo que no tendrá NINGÚN NÚMERO NEGATIVO, debe convertir nvarchar a Int para su cláusula between y establecer un valor predeterminado para el caso de que no se pueda convertir, como se muestra a continuación:

 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
 )

Elegimos -1 como valor predeterminado porque si no es capaz de numerar, la cláusula entre debe ser falsa siempre.

(SOLO RESPONDERÁ A LOS NÚMEROS MENORES DEL RANGO INT)