gpt4 book ai didi

MYSQL CAST AS DECIMAL for VARCHAR 字段

转载 作者:可可西里 更新时间:2023-11-01 08:20:10 24 4
gpt4 key购买 nike

我的客户给了我一个电子商务项目来修复一些错误。较早的愚蠢开发人员在产品表中给价格字段 VARCHAR 数据类型而不是非常明显的 INTEGER 数据类型,因此下一组开发人员为了根据价格范围进行搜索使用 CAST(价格为十进制)。现在,我是第三个研究这个的人,我发现这个 CAST AS DECIMAL 的东西并不奇怪只适用于 0-500 的价格范围,但适用于所有其他价格范围,如 500-1000、1000-2000 等等.

查询是这样的:

目前的查询是:

 SELECT * FROM tbl_product where status=1 and subcat_id='128' and
price>'0' and price<='500' ORDER BY CAST(price AS DECIMAL(12,2)) ASC

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

最佳答案

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

  1. 添加新列 priceNew DECIMAL(12,2)
  2. 将数据从 price 迁移到 priceNew
  3. 确认 priceNew 中的数据正确后,删除 price 并将 priceNew 重命名为 price
  4. 删除所有 CAST(price AS DECIMAL) hackjobs 并开始将数字作为数字处理
  5. 更新任何 SELECT/UPDATE/INSERT 的定价以确保它处理正确的新数据类型

从长远来看,这将大大减少您的麻烦,并且更加可靠/优化。它还将允许 MySQL 将其正确地视为数字而不是字符串,因此根据该列选择范围的键/值将变得更加高效。

关于MYSQL CAST AS DECIMAL for VARCHAR 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16105185/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com