繁体   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