この関数に関する 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>
ダンプには、予想される値が表示されます: 整数 1 ~ 10。
ただし、valuelist
関数の出力は次を返します。
1,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0
最初の値以降のすべての値が評価され、float に変換されます。これはなぜですか? 今後これを防ぐにはどうすればよいですか?