这是我的查询

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

===============>>#1 票数:1

根据您的评论,此操作无效的原因是(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))

===============>>#2 票数:0

您会发现,如果尝试将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

  ask by LittleMissChoco translate from so

未解决问题?本站智能推荐:

7回复

MySQL concat两次选择的结果

我在MySQL中使用以下查询,将两个表中的一个字段求​​和成一个数字: 这工作正常,并且sumOfTheTwo给了我正确的结果。 问题是,我想将此数字输出为货币。 通常,我将使用以下内容: 在这种情况下,我不知道该怎么办。 有人可以建议什么吗? 谢谢! 编辑
1回复

UNION SELECT CONCAT在MariaDB / MySQL之间的工作方式有所不同

我最近将一个应用程序从MySQL 5.5迁移到了MariaDB 10.3。 该应用程序的一部分是事件日历,用户可以在其中输入自己的事件,其中包括地址,城镇等详细信息。 我注意到运行该软件的查询之一不再适用于MariaDB,尽管语法仍然可以。 我试图回到MySQL 5.5,查询再次起
3回复

在MySql中创建视图时如何使用select *和concat

我正在尝试使用sqlfiddle v 5.6或MySQL Workbench v5.7创建视图,以包括来自表CUSTOMERS的所有信息,但将firstName和lastName连接为wholeName。 我尝试使用以下方法: 和 省略CONCAT函数时,将创建视图。 它使我
1回复

有什么办法将文本合并到mysql行中? 我需要它保存到数据库

我正在运行此查询,但我仍然认为它是不正确的: 但是,即使它是正确的,我也不认为这符合我的需求。 我需要在字段前面附加“ VOID:*”。 我不想获取数据,并将其连接起来,然后重新更新。 这似乎很愚蠢。 mysql中有没有一种方法可以在不首先将其拉出的情况下向该字段添加文本?
2回复

通过concat向数据库添加值,但顺序相反(最后一行是第一行)

是否有任何技巧可以通过sql将最后一个输入添加为FIRST输入? 在此示例中,将最后一行添加到lastline : 这是将值添加到数据库时的当前顺序: 我希望最后一行将首先添加(不读取和写入lastline的内容),因此进度将直接在编写该行时: 谢谢 !
2回复

检查多个列以进行串联匹配MySQL

嗨,我的SQL查询遇到问题,我有一个表,其中包含3列,一列用于车辆品牌 ,一列用于模型 ,一列用于模型版本 。 所以我的数据像 我被要求用输入来替换当前的下拉菜单系统,以使用户更容易选择车辆。 我正在使用jQuery Autocomplete,而我的查询看起来像这样。
7回复

MySQL查询中的Concat()

我在连接MySQL查询中的字符串时遇到问题。 这是我的查询: 但是查询失败: Query failed: Unknown column 'fullname' in 'where clause' 可能只是一个sintax错误,thx
2回复

concat()在mysql查询和全文中

语法杀了我! 下一个查询有问题: 错误: 查询失败:您的SQL语法出错; 查看与您的MySQL服务器版本相对应的手册,以便在'(nombre,' ',apellido)) AGAINST ('dan stern') AS Score FROM user WHERE MATC
1回复

mongodb像concat mysql查询

我在Mysql中有一个表,其中有一些IP的D和C类,并且我使用此表来测试请求IP是否在数据库中或属于C类,例如: (其中192.168.1.12是我正在针对我的表测试的请求IP) 在我的数据库中,如果我具有C格式的IP'192.168.1',我将得到一个匹配。 我正在考虑使用
2回复

MySQL Concat查询替代

我有数据库表: 如何有效地查询它并期望结果如下: 我有一个使用GROUP_CONCAT( know_from SEPARATOR ',')知道的)的解决方案GROUP_CONCAT( know_from SEPARATOR ',')但是服务器仍在使用不支持此语法的MySQL 5.