ColdFusion的valuelist函数文档说它不会评估这些值,而这就是它过去一直对我的表现.我以前valuelist多次使用过该功能,以前从未遇到过这个问题.我们正在使用CF9.0.1,但这最初出现在CF9.0的一个实例上.
当我们number从Oracle数据库中提取值时,情况出现了,该数据库支持浮点值.存储的值都是整数,而不是浮点数.下面的代码复制了我们看到的行为.数据是通过我们可以更改(使用CAST)的存储过程检索的,但是如果可能的话我们希望避免.
<cfscript>
qryVLTest = queryNew('member_id') ;
for ( i = 1; i LTE 10; i=i+1) {
queryAddRow(qryVLTest,1) ;
querySetCell(qryVLTest,'member_id',i) ;
}
writedump(qryVLTest) ;
writeoutput(valuelist(qryVLTest.member_id)) ;
</cfscript>
Run Code Online (Sandbox Code Playgroud)
转储显示我期望的值:整数1-10.
但是,该valuelist函数的输出返回以下内容:
1,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0
评估第一个之后的所有值并将其转换为浮点数.为什么会这样,以后如何防止这种情况发生?
你有2个选择.你可以这样做:
querySetCell(qryVLTEst,"member_id","#i#")
Run Code Online (Sandbox Code Playgroud)
哪个应该强制一个字符串.或者你可以指定INT,如果这是你想要的(如azawaza所示).
queryNew("member_id","Integer");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |