我试图理解一些不再在这个项目中工作的人所创建的代码,但是我在理解以下内容时遇到了一些困难。 我认为有一个更有经验的使用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
你能帮我理解它的含义吗?
答案 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)
的值。