1

我试图理解一些不再在这个项目中工作的人创建的代码,但是我在理解以下行时遇到了一些困难。我认为使用 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

你能帮我理解它在说什么吗?

4

1 回答 1

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).

于 2013-11-09T15:22:12.223 回答