单表的批量SQL更新

时间:2015-02-02 12:09:46

标签: sql sql-server

我在表格中对35050行进行批量更新时遇到问题,我需要更新前面没有零的所有条形码。我有的SQL SELECT语句是这样的。它可以正常工作,但我的更新声明没有。

SELECT * 
FROM [Hep_ManEquipInterface].[dbo].[LabelUnitBarcodes] h WITH (NOLOCK) 
WHERE LEFT(h.barcode, 1) != '0'
ORDER BY [created_at] desc

哪位给我这张桌子。

barcode         weight  created_at                location  SupplierType
409101685473    2285    2015-02-02 12:23:03.830   372   
409101275155    2285    2015-02-02 12:22:51.143   372   
409101685466    2285    2015-02-02 12:22:34.983   372   
409101275148    2285    2015-02-02 12:22:25.280   372   

结果应该是条形码前面为零:

barcode         weight  created_at                location  SupplierType
0409101685473   2285    2015-02-02 12:23:03.830   372   
0409101275155   2285    2015-02-02 12:22:51.143   372   
0409101685466   2285    2015-02-02 12:22:34.983   372   
0409101275148   2285    2015-02-02 12:22:25.280   372   

我当然试过了,但是我在使用这句话时仍然收到错误:

UPDATE [Hep_ManEquipInterface].[dbo].[LabelUnitBarcodes]
SET [barcode] = '0'+ (SELECT * h.[barcode] FROM [Hep_ManEquipInterface].[dbo].[LabelUnitBarcodes] h WITH (NOLOCK) WHERE LEFT(h.barcode, 1) != '0')

1 个答案:

答案 0 :(得分:5)

不要让事情复杂化,这只是一个简单的更新。

UPDATE [Hep_ManEquipInterface].[dbo].[LabelUnitBarcodes]
SET [barcode] = '0'+ [barcode]
WHERE LEFT(barcode, 1) != '0'