MYSQL CAST为DECCHAL用于VARCHAR字段

时间:2013-04-19 12:57:45

标签: mysql decimal

我已经获得了一个电子商务项目来修复我的客户端的一些错误。早期的 dumb 开发人员在产品表中给出了价格字段VARCHAR数据类型而不是非常明显的INTEGER,因此下一组开发人员为了根据价格范围进行搜索而使用{{ 1}}。 现在,我是第三个研究这个问题的人,并且发现这个CAST AS DECIMAL的东西并不奇怪,只适用于0-500的价格范围,但适用于所有其他类似500-1000,1000-2000等等

查询如下:

到目前为止的查询是:

CAST(PRICE AS DECIMAL)

这是以某种方式搜索价格为1000及以上的产品.. 请帮忙..

1 个答案:

答案 0 :(得分:3)

这里最好的选择是接受VARCHAR不是正确的数据类型。你的行动计划很简单。

  1. 添加新列价格新DECIMAL(12,2)
  2. 将数据从价格迁移到priceNew
  3. 一旦确认数据在priceNew中是正确的,删除​​价格并重命名priceNew to price
  4. 删除所有CAST(价格AS DECIMAL)hackjobs并开始处理该号码作为数字
  5. 将SELECT / UPDATE / INSERT的任何内容更新为价格,以确保它处理正确的新数据类型
  6. 从长远来看,这将使您的头痛更少,并且更可靠/最佳。它还允许MySQL将其正确地视为数字而不是字符串,因此基于该列选择范围的键/值将变得更有效。