2015-05-19 66 views
0

我有一个非常大的MySQL表,其中有大量的数据,其中一个字段是发票号,并且是一个以1000.001(这是一个字符串)开始的数字。我从离开公司的人那里得到了这个信息,他们通过excel导入了数据,其中一些数字是1000.01而不是1000.010。使用通配符更新和替换

当我运行这个查询在PHP我的管理员,它显示有超过11k行,所以我可以看到他们确定。

SELECT `AnalysisID` , `InvoiceNo` 
FROM `STStbl000010` 
WHERE `InvoiceNo` LIKE '%.__' 
ORDER BY `STStbl000010`.`AnalysisID` ASC 

所以简单地说,我需要在这些条目的末尾添加一个0(零)。

我试过以下,但是,它只是返回0行受到影响。

我可以像这样使用通配符吗?更新和替换语句?

UPDATE `STStbl000010AT` 
SET `InvoiceNo` = replace(`InvoiceNo`, '%.__', '%.__0') 
WHERE `InvoiceNo` LIKE '%.__' 

感谢

+0

才知道,使用替代,不会使用索引。如果它确实是一个大型的数据库,它可能会非常非常慢:) –

+0

它可能更好地使用concat而不是替换 – exussum

回答

1

不能使用的通配符代替,因此没有匹配的行。

幸运的是,如果你只是想添加一个0,你可以将字符串值:

UPDATE `STStbl000010AT` 
    SET `InvoiceNo` = CONCAT(`InvoiceNo`,'0') 
WHERE `InvoiceNo` LIKE '%.__' 
+0

完美,谢谢。 –