有人能告诉我为什么我不能在数学函数中使用三元运算符吗?
以下是一个例子:
<cfset test = 1>
<cfdump var="#structKeyExists(Variables, 'test') ? 1 : 0 + 20#">
我希望结果为21
,但结果实际上是1
。
我在CF10上发现了这个,当我在Railo上测试时,它出现了同样的问题,所以我想知道:这是一个错误还是有一个原因我不应该是能够在这种情况下使用三元运算符吗?
答案 0 :(得分:4)
你的三元组的错误陈述不会在0结束,它会在代码行的末尾结束。如果检查结果为false,则三元组将在示例SELECT *
FROM (SELECT CONCAT(RIGHT('00' + CONVERT(VARCHAR(2),Procedures.SeriesNum),2),'-',RIGHT('0000' + CONVERT(VARCHAR(4),Procedures.ProcNum),4)) AS 'Procedure',
Procedures.Description,
Procedures.CurrentRev,
UsersProcedures.RevTrained,
Users.Username,
UsersProcedures.LevelTrained FROM Procedures CROSS JOIN Users LEFT JOIN UsersProcedures ON UsersProcedures.Username = Users.Username AND Procedures.SeriesNum = UsersProcedures.SeriesNum AND Procedures.ProcNum = UsersProcedures.ProcNum) AS Procs
PIVOT
(
MAX(LevelTrained)
FOR Procs.Username
IN(User1,User2,User3)
) AS PivotTable
中返回:
的语句权限。
正如初学者所建议的,使用括号可以让你更早地结束三元组,并继续操纵结果。 0 + 20
会给你21或20个。