簡體   English   中英

批量更新/替換mysql

[英]Bulk Update / Replace mysql

我是MySQL的新手,可能需要您的幫助。 我有一個稱為localgames表,並且我試圖替換一些值來清理表,因此這是我所嘗試的問題以及所提出的“解決方案”的疑問:

為了替換簡單的條目,我使用了:

UPDATE localgames 
   SET Stock = REPLACE(Stock, '0 in stock', 'Sold out');

因此0 in stock ”列中所有0 in stock條目中的0 in stock被“ Sold out替換。 涼。

但是,現在我還有另一個輸入,例如1 in stock 2 in stock 3 in stock個以及XX in stock 100個以上,我想將它們全部替換為In stock

有沒有辦法使用類似SET Stock = REPLACE(Stock, '*.* in stock', 'In Stock');

使用所有強大的CASE語法

UPDATE inventory
SET quantity = CASE WHEN quantity = '0 in stock' THEN 'Out of Stock' ELSE 'In Stock' END

在這里查看我的SQLfiddle: http ://sqlfiddle.com/#!9 / 2494c6 / 1

另外, IF也可以:

UPDATE inventory
SET quantity = IF(quantity = '0 in stock', 'Out of stock', 'In Stock')

SQLfiddle此處: http ://sqlfiddle.com/#!9/4551a8/1

更新:針對您的評論,還有另外兩種方法(如果您具有REGEXP支持)

UPDATE inventory
SET quantity = CASE WHEN quantity = '0 in stock' THEN 'Out of Stock'
  WHEN quantity REGEXP '^[0-9]+ in stock$' THEN 'In Stock'
  ELSE quantity END

或者簡單地

UPDATE inventory
SET quantity = IF(quantity REGEXP '^[0-9]+ in stock$', 'In Stock', quantity)

更新2:如果您沒有regexp支持,您仍然可以這樣做(盡管采用了駭人聽聞的方式):

假設您已經將庫存的0轉換為庫存的不足,則可以使用以下方法:

UPDATE inventory
SET quantity = IF(
    CONCAT('', SUBSTR(quantity, 1, 1) * 1) = SUBSTR(quantity, 1, 1),
    'In Stock',
    quantity
)

我使用這篇文章來確定某些東西是否是數字,並且我正在使用SUBSTR(quantity, 1, 1)來確定字符串中的第一個字母是否是數字,如果是,請對其進行設置。 請注意,如果您有1的未交貨訂單,這將不起作用

在此處查看SQLfiddle: http ://sqlfiddle.com/#!9 / 1774c6 / 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM