格式化函数错误与百分比数据

时间:2018-01-26 10:05:37

标签: sql sql-server

当我在MS SQL Server 2016中执行以下脚本时,我得到的结果为' y'。为什么137%< 20%?但如果我将其改为100%以下,它似乎工作正常。

select IIF(FORMAT(1.37,'P0') < FORMAT(0.2,'P0'), 'y', 'n')

1 个答案:

答案 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),则仅使用casecase是SQL中用于条件功能的标准; iif()用于向MS Access提供向后支持。