【问题标题】:SQL Query - How do I convert a text field containing dollar sign to decimal only (strip out dollar sign)SQL 查询 - 如何将包含美元符号的文本字段仅转换为十进制(去掉美元符号)
【发布时间】:2013-08-27 13:11:41
【问题描述】:

我在 MySQl 数据库上运行查询,我有一个文本字符字段,其中包含一个带有美元符号和数字的美元金额(即 $1,345.89)我需要检查非 NULL(一些文本字段为 NULL)并且该值大于 0。如何将此文本字段转换为十进制值,以便验证它是否大于 0。我不想更改数据库中的原始文本。

谢谢

这是我尝试过的一个查询,但它不起作用:

SELECT parcel, year, due FROMdeliquent_property WHERE year IN ('2013', '2012', '2011', '2010') GROUP BY parcel HAVING due LIKE '%[0-9]%';

【问题讨论】:

  • 您是否要求查询在此字段中返回包含数字 1 到 9 的行,或者如果某事为真,则返回所有行的列包含 0 或 1 的查询,或者...
  • 现在是的,但根据我的发现,我可能会将值从零增加到 100 或 1000。所以只需寻找 1-9 的出现作为大于零的测试不会工作。

标签: mysql null char decimal dollar-sign


【解决方案1】:

这个查询可以解决问题:

SELECT ID, 
       CAST(REPLACE(REPLACE(IFNULL(Amount,0),',',''),'$','') AS DECIMAL(10,2)) 
FROM Table1
WHERE CAST(REPLACE(REPLACE(IFNULL(Amount,0),',',''),'$','') AS DECIMAL(10,2)) > 0

请参阅 SQLFIDDLE:http://www.sqlfiddle.com/#!2/55f433/1/0

【讨论】:

  • 出色的答案,对我来说非常适合转换价值为 100.00 美元的 varchar(50) 字段,我需要获取这些记录 >150.00
猜你喜欢
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多