繁体   English   中英

MYSQL查询,关于CONCAT

[英]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()函数以将varchardecimalfloat

编辑:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM