Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment utiliser la clause between sur un nvarchar?

En supposant que vous n'aurez AUCUN NOMBRE NÉGATIF, vous devez convertir nvarchar en Int pour votre clause between et définir une valeur par défaut pour le cas où il n'est pas possible de le convertir comme ci-dessous :

 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
 )

Nous avons choisi -1 par défaut car s'il n'est pas capable de numéroter, la clause between doit toujours être fausse.

(IL NE RÉPONDRA QUE POUR LES CHIFFRES INFÉRIEURS À LA PLAGE INT)