PHP和Mysql,关于删除记录,如果字段有2次出现$,美元符号在价格字段中

时间:2013-06-10 15:22:44

标签: php mysql count duplicates records

首先感谢阅读。

价格字段有时是无效形式。该值的默认形式应为$ xxx.xx但是,有时它可能会显示$ xxx.xx $ xxx.xx,这是我想要完全删除的内容。我基本上只是想在价格字段中发生错误时删除该行。

我能够使用php函数进行检查以简单地检查它,但似乎需要很长时间才能这样做,因为它必须遍历每个记录(大约2000+)。有没有更好更快的方法呢?也许直接在MYSQL命令中?

目的是验证价格字段以确保它没有重复的美元符号,如果是,则在进一步处理之前删除它们。

        if(substr_count($deleterow['product_price'], "$") >= 2 || $deleterow['product_StoreItemNumber'] = null)

2 个答案:

答案 0 :(得分:1)

UPDATE table SET produce_price=0 WHERE produce_price LIKE '%$$%'

让数据库完成工作。

编辑允许如前所示的定价(btw真的不好将价格符号存储在一列中,该列应该是十进制(10,2)格式并且只存储价格值,即xxx.xx,其中您的货币符号应该在申请中。

UPDATE table SET produce_price='$0.00' WHERE produce_price LIKE '%$%$%' OR produce_price LIKE '%$$%'

答案 1 :(得分:1)

如果您要确保价格标志没有重复的美元符号,首先您必须询问为什么您的价格列允许美元符号。它应该是一个数字。

也就是说,在MySQL中查找字符串中字符出现次数的方法是获取字符串的长度,然后从中删除字符被删除的字符串的长度。例如:

  1. price ='$ 123.45 $'`(长度= 8)
  2. REPLACE(price, '$', '') = 123.45`(length = 8)
  3. 8 - 6 = 2,因此`price中有两个$
  4. 所以在MySQL中逻辑就像thisL:

    WHERE LENGTH(price) - LENGTH(REPLACE(price, '$', '')) >= 2
    

    或者,您可以通过删除所有美元符号,然后在该值前加一个美元符号,将所有price值更新为只有一个美元符号。这将更新所有行,但它们都将具有单个美元符号:

    UPDATE myTable
    SET price = CONCAT('$', REPLACE(price, '$', ''))
    

    但同样,您应该使用数字列并在前端代码中格式化价格。