Coldfusion数据库插入将长数值更改为科学记数法

时间:2017-07-19 15:04:34

标签: mysql coldfusion floating-point

我正在尝试使用输入值更新我的数据库,数据通过JSON传递给更新的coldfusion文件:customValue:"6436534653465346347734653465346"。插入/更新查询应该使用此值,只需使用<cfqueryparam>标记将其插入数据库:<cfqueryparam value="#VARNETJSONInput.customValue#" cfsqltype="cf_sql_varchar">

但由于某种原因,我无法理解它被插入我的MySQL数据库6.43653465347E+030。我已经尝试在值中使用tostring()来强制插入为字符串,但它仍然会将其转换为科学记数法。我必须使用cf_sql_varchar因为这个输入可以同时使用数字和字母。

数据库列的类型为:varchar (utf8 utf8_general_ci, length: 255)

有没有办法强制插入或使用coldfusion标签将公式转换为长数?

<cfif getcurrentother.RecordCount GT 0>
            <cfquery name="updateCustom" datasource="#OLMSdatasourceWrite#" result="res_updateCustom">
                UPDATE OLMS_Data_LRSS_CustomSelect
                SET OLMS_LRSS_CustomFieldSelect_Content = #VARNETJSONInput.customValue#
                WHERE OLMS_LRequestSubSet_ID = <cfqueryparam value="#VARNETJSONInput.LRSS#" cfsqltype="cf_sql_numeric"> AND
                    OLMS_AccountCustomField_ID = <cfqueryparam value="#VARNETJSONInput.customId#" cfsqltype="cf_sql_numeric">
            </cfquery>
        <cfelse>
            <cfquery name="insertCustom" datasource="#OLMSdatasourceWrite#" result="res_updateCustom">
                INSERT INTO OLMS_Data_LRSS_CustomSelect(OLMS_AccountCustomField_ID, OLMS_LRequestSubSet_ID, OLMS_LRSS_CustomFieldSelect_Content)
                VALUES
                (
                    <cfqueryparam value="#VARNETJSONInput.customId#" cfsqltype="cf_sql_numeric">
                    ,<cfqueryparam value="#VARNETJSONInput.LRSS#" cfsqltype="cf_sql_numeric">
                    ,#VARNETJSONInput.customValue#
                );
            </cfquery>
        </cfif>

2 个答案:

答案 0 :(得分:1)

由于您将数字存储为字符串,因此您始终可以发送字符串。

<cfqueryparam 
value="#numberFormat(VARNETJSONInput.customValue, '9999999999999999999999999999')#" 
cfsqltype="cf_sql_varchar">

确保你有足够的9s。

答案 1 :(得分:0)

这是一个已知的coldfusion问题,他们已经意识到了这一点:

https://tracker.adobe.com/#/view/CF-4106369