2015-05-19 108 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

完美,謝謝。 –