Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie verwendet man eine between-Klausel auf einem nvarchar?

Angenommen, Sie haben KEINE NEGATIVE NUMMER, müssen Sie nvarchar für Ihre between-Klausel in Int umwandeln und einen Standardwert für den Fall festlegen, dass es nicht umsetzbar ist, wie unten:

 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
 )

Wir haben -1 als Standard gewählt, da die between-Klausel immer falsch sein muss, wenn sie nicht gecastet werden kann.

(ES WIRD NUR AUF DIE ZAHLEN KLEINER ALS INT RANGE ANTWORTEN)