任何人都可以同时使用SET,SELECT和CAST检查我的SQL代码

时间:2015-08-06 16:53:41

标签: mysql sql casting phpmyadmin

我正在尝试将一些csv文件导入表格(在phpmyadmin上)。问题是导入不正确(日期没有显示,我的值也是(当类型是VARCHAR时它们正确显示)等等)所以我想在导入期间将我的值转换为正确的类型。当我尝试使用它的日期时,它最终仅使用下面的代码:

SET Date = STR_TO_DATE (@dte, '%m.%d.%Y')
SQL;

但是当我想将我的值转换为浮点数或小数或其他什么时,它就不起作用了。它总是说'语法错误或访问冲突'(我想它从=开始(选择CAST(@tot AS decimal(10,2))等)。

你有什么建议吗? 请求

Select CAST(@tot AS decimal(10,2)) 
            from `bss_154`) 

通常适用于mySQL。

提前致谢。

PS:这是我的代码:

$sql=<<<SQL
    LOAD DATA INFILE '{$filename}' 
    IGNORE INTO TABLE nsui.bss_154 
    FIELDS TERMINATED BY ';' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\r\n' IGNORE 1 LINES 
    (@dte, `BSC_Name`, `Segment_Name`, `SEGMENT`, `UP_QUAL`, `UP_LEVEL`, 
    `DOWN_QUAL`, `DOWN_LEV`, `DISTANCE`, `MSC_INVOC`, `INTFER_UP`, 
    `INTFER_DWN`, `UMBR`, `PBDGT`, `OMC`, `DIR_RETRY`, `PRE_EMPTION`, 
    `FIELD_DROP`, `LOW_DISTANCE`, `BAD_CI`, `GOOD_CI`, `HO_DUE_SLOW_MOV_MS`, 
    `HO_DUE_MS_SLOW_SPEED`, `HO_DUE_MS_HIGH_SPEED`, 
    `HO_ATT_DUE_SWITCH_CIRC_POOL`, `HO_ATT_DUE_ERFD`, 
    `HO_ATT_DUE_TO_BSC_CONTR_TRHO`, `HO_ATT_DUE_TO_DADLB`, 
    `HO_ATT_DUE_TO_GPRS`, `HO_ATT_DUE_TO_HSCSD`, `HO_ATT_DUE_BAD_SUPER_RXLEV`, 
    `HO_ATT_DUE_GOOD_REGULAR_RXLEV`, `HO_ATT_DUE_DIRECT_ACCESS`, 
    `HO_ATTEMPT_INTERBAND_DUE_LEVEL`, `HO_ATTEMPT_DUE_TO_ISHO`, 
    `HO_ATT_DUE_INTERSYS_DIRECT_ACC`, `HO_ATT_FOR_AMR_TO_HR`, 
    `HO_ATT_FOR_AMR_TO_FR`, `HO_ATT_INTER_BAND_SDCCH`, 
    `HO_ATT_INTER_BAND_TCH`, `HO_ATT_INTER_BTS_TYPE_SDCCH`, 
    `HO_ATT_INTER_BTS_TYPE_TCH`, @tot) 
    SET Date = STR_TO_DATE (@dte, '%m.%d.%Y'),   
        Hoattempts_outgoing_and_intra-cell = (
            Select CAST(@tot AS decimal(10,2)) 
            from `bss_154`)
SQL;

1 个答案:

答案 0 :(得分:0)

此外,您可能希望首先在表定义中创建正确的数据类型(VARCHAR),然后导入可以的数据,然后创建另一个脚本,使用正确的FORMAT导入并修复剩余的字段数据和CAST语句语法:

FORMAT(值,格式[,文化])

请参阅:https://msdn.microsoft.com/en-us/library/hh213505.aspx

CAST(表达式AS data_type [(length)])

请参阅:https://msdn.microsoft.com/en-us/library/ms187928.aspx

使用一些代码:

CAST(格式化(@tot,'N','en-us')as varchar)作为SOME_TOTAL