[英]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.