我真的是mysql新手,可能需要您的帮助。我有一个名为localgames
的表,并且我试图替换一些值以清除该表,所以这是我所尝试的问题以及所提出的“解决方案”的疑问:
要替换一个简单的条目,我使用了:
UPDATE localgames
SET Stock = REPLACE(Stock, '0 in stock', 'Sold out');
因此,股票列中的所有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');
的东西?
答案 0 :(得分:0)
使用全能的CASE
syntax:
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:如果您没有正则表达式支持,则仍然可以这样做(尽管采用了骇人听闻的方式):
假设您已经将0库存转换为无库存,则可以使用以下方法:
UPDATE inventory
SET quantity = IF(
CONCAT('', SUBSTR(quantity, 1, 1) * 1) = SUBSTR(quantity, 1, 1),
'In Stock',
quantity
)
我使用this post来确定某物是否为数字,而我使用SUBSTR(quantity, 1, 1)
来确定该字符串中的第一个字母是否为数字,如果是,则对其进行设置。请注意,如果您的待补商品中有1件东西,这将不起作用。
在此处查看SQLfiddle:http://sqlfiddle.com/#!9/1774c6/1