当我在MS SQL Server 2016中执行以下脚本时,我得到的结果为' y'。为什么137%< 20%?但如果我将其改为100%以下,它似乎工作正常。
select IIF(FORMAT(1.37,'P0') < FORMAT(0.2,'P0'), 'y', 'n')
答案 0 :(得分:0)
因为您正在比较字符串,字符串比较不是数字。字符串按字母顺序进行比较,&#39; 1&#39; &LT; &#39; 2&#39;,所以&#39; 1000&#39; &LT; &#39; 2&#39;,就像&#39; azzzz&#39; &LT; &#39; B&#39;
相反,只需比较数字并使用ANSI标准case
:
select (case when 1.37 < 0.2 then 'y' else 'n' end)
如果您使用不支持iif()
表达式的&#34;数据库&#34;(例如MS Access),则仅使用case
。 case
是SQL中用于条件功能的标准; iif()
用于向MS Access提供向后支持。