[英]MYSQL QUERY, ALL ABOUT CONCAT
这是我的查询
SELECT PART_NUM,DESCRIPTION, CONCAT('$',(ON_HAND*PRICE)) AS ON_HAND_VALUE
FROM part WHERE CLASS ='AP'
但是当我尝试查询它时,我的答案将始终等于$ 0,就像(ON_HAND * PRICE)无法正常工作
这些是值:
Microwave Oven == 32*$165 GAS RANGE == 8*495 DISHWASHER ==8*595 DRYER ==12*349.95 WASHER ==128399.99
结果必须是:
PART_NUM----DESCRIPTION ---------ON_HAND_VALUE CD52 -----------MICROWAVE OVEN----$5280 DR93----------- GAS RANGE----------- $3960 KT03----------- DISHWASHER----------- $4760 KL62----------- DRYER----------- $41994.4 DW11----------- WASHER----------- $4799.88
根据您的评论,此操作无效的原因是(On_Hand * price)的结果是错误的(您将数字与字符串相乘)
另一方面,如果on_hand为int
且price为decimal/double/float
则可以使用以下命令获得正确的结果:
CONCAT('$',convert(ON_HAND*PRICE,char))
如果PRICE是varchar
我强烈建议在继续之前将其存储为decimal
。 如果将价格存储为varchar
那么您遇到的这个问题仅仅是头痛的开始。
如果无法做到这一点,则可以在执行乘法之前,先查看Cast()函数以将varchar
为decimal
或float
。
编辑:
MySQL看起来足够聪明,可以将varchars转换为浮点数,但是当varchar字段中有“ $”符号时,它会工作。
因此,也许尝试执行以下操作:
CONCAT('$',convert(ON_HAND*Right(PRICE,Length(Price)-1),char))
您会发现,如果尝试将int与varchar相乘,则会得到奇怪的结果。 尝试这个
CONCAT('$',CAST(PRICE,int)*ON_HAND)
或这个
CONCAT('$',CONVERT(PRICE,int)*ON_HAND)
docs http://dev.mysql.com/doc/refman/5.0/zh-CN/cast-functions.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.