回答

收藏

如何将字符串比较为整数

技术问答 技术问答 278 人阅读 | 0 人回复 | 2023-09-12

SQL Server 2012中( _" p1 J6 g( \. W% l: d2 h1 O
,我有一组定义为列VARCHAR。值是指数的阈值,可以是数字或字符串值。例如,温度阈值为数字0和100,门阈值为open和closed。
; X5 x$ J2 `: D, C# k. ~4 R1 A- \我想测试一个值[ResponseValue],看它是否是两个定义之间的阈值,[Value_Threshold_min]和[Value_Threshold_max]。该[ResponseValue]可以是NUMERIC或VARCHAR,但总是存储VARCHAR。该Threshold_max/min存储为VARCHAR。7 C% O% X' O8 X1 H: U: I
SELECT responsevalue  (CASE WHEN ResponseValue BETWEEN steps.value_threshold_min AND steps.Value_Threshold_max else END THEN column_color FROM steps JOIN responses on responses.stepid = steps.id WHERE stepid = 4447这不能正确测试数字值。例如,据说12在100到200之间,因为它被当作字符串来求值。
' e: o/ [- a% _5 @6 m% j8 c( _  \; ]我试着检查这个值是否是数字,如果是这样,它将被迫转换为int,但只要值是字母数字,它就会失败。
4 g- g) ]8 M: LCASE WHEN isnumeric([Responses].[ResponseValue]) = 1 THEN CAST([Responses].[ResponseValue] as int) ELSE [Responses].[ResponseValue] END) BETWEEN steps.value_threshold_min AND steps.Value_Threshold_max THEN column _color如何将数字视为数字,将字符串视为字符串?2 C$ o/ Q' Q9 ~( b1 \! Y5 K2 n& z. X
                                                               
2 E  i1 p8 q- f    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则