【发布时间】:2015-05-22 16:30:27
【问题描述】:
我正在处理一些糟糕的数据源(数据存储在另一个数据库中,并作为文本推送到我的数据库中,即使它应该存储为整数......这并非总是如此,但它正在发生经常由于数据源的设置方式,不幸的是我不能只更改数据源)。
我想对此数据执行一些简单的函数,但由于许多值被存储为文本,算术运算符的结果值为零。
有没有办法可以在我的 SQL 查询中将字符串转换为数字,以允许这些函数返回列的总和值而不是零:
选择
closeout_sl_dataform.OFS_ID AS OFS,
((closeout_sl_dataform.PO1_FE_HRS_CLOSEOUT_SL + closeout_sl_dataform.PO2_FE_HRS_CLOSEOUT_SL) + closeout_sl_dataform.PO3_FE_HRS_CLOSEOUT_SL) 如TOTAL_FE_HOURS,
((closeout_sl_dataform.PO1_FE_COST_CLOSEOUT_SL_USD + closeout_sl_dataform.PO2_FE_COST_CLOSEOUT_SL_USD) + closeout_sl_dataform.PO3_FE_COST_CLOSEOUT_SL_USD) 如TOTAL_FE_COST,
((closeout_sl_dataform.PO1_CRAFT_COST_CLOSEOUT_SL_USD + closeout_sl_dataform.PO2_CRAFT_COST_CLOSEOUT_SL_USD) + closeout_sl_dataform.PO3_CRAFT_COST_CLOSEOUT_SL_USD) 如TOTAL_CRAFT_COST,
closeout_sl_dataform.CRANE AS TOTAL_CRANE,
closeout_sl_dataform.SCAFFOLDING AS TOTAL_SCAFF,
closeout_sl_dataform.PO1_TOTAL_COST_CLOSEOUT_SL AS TOTAL_PO1,
closeout_sl_dataform.PO2_TOTAL_COST_CLOSEOUT_SL AS TOTAL_PO2,
closeout_sl_dataform.PO3_TOTAL_COST_CLOSEOUT_SL AS TOTAL_PO3,
((closeout_sl_dataform.PO1_TOTAL_COST_CLOSEOUT_SL + closeout_sl_dataform.PO2_TOTAL_COST_CLOSEOUT_SL) + closeout_sl_dataform.PO3_TOTAL_COST_CLOSEOUT_SL) AS SUMPO123
FROM closeout_sl_dataform
就像现在一样,TOTAL_FE_HOURS 在大多数情况下会产生 0 值,因为表达式中的值是文本类型而不是整数。我的表都有 VARCHAR 的列值,以便接受在原始数据源中设置为整数或数字的值。
感谢您的帮助!我是 SQL 的新手,虽然我确信这可能是微不足道的,但我正在尝试自己解决这个问题。
【问题讨论】:
-
是什么阻碍了你根据这些文本的输入来启动你设计的影子数据库?
-
我在目前的职位上还有两周的时间在公司担任新职位之前,希望能有一个快速的解决方案,让我能够解决我之前越来越多的“待办事项”继续前进:)
标签: mysql arithmetic-expressions