MySQL:了解sql代码

时间:2013-11-09 14:51:41

标签: php mysql

我试图理解一些不再在这个项目中工作的人所创建的代码,但是我在理解以下内容时遇到了一些困难。 我认为有一个更有经验的使用mysql将能够帮助我这个。

这里是行代码:

SET price_calc=(REPLACE(@price,',','.') * IF(SUBSTRING(nmu,-1)='I', 1.414819,1.21))";

此SET是LOAF DATA INFILE声明的一部分,我不理解的部分是这个表达式:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
    [TERMINATED BY 'string']
    [[OPTIONALLY] ENCLOSED BY 'char']
    [ESCAPED BY 'char']
]
[LINES
    [STARTING BY 'string']
    [TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...] -- this corresponds to the line that uses the expression I'm not understanding

你能帮我理解它的含义吗?

1 个答案:

答案 0 :(得分:3)

SET price_calc=(REPLACE(@price,',','.') * IF(SUBSTRING(nmu,-1)='I', 1.414819,1.21))";

SET price_calc将设置名为“price_calc”的列的值。它会将其设置为“=”右侧的计算结果。

(REPLACE(@price,',','.') * IF(SUBSTRING(nmu,-1)='I', 1.414819,1.21))

简化为

first-expression * second-expression

第一个表达式是

REPLACE(@price,',','.')

它会将逗号替换为@price中的句点。某些语言环境使用逗号作为小数点;你的数据库显然没有。

第二个表达是

IF(SUBSTRING(nmu,-1)='I', 1.414819,1.21)

这意味着您将first-expression乘以1.414819或1.21,具体取决于SUBSTRING(nmu,-1)的值。