批量更新/替换mysql
我是mysql的新手,可能需要你的帮助。我有一个名为批量更新/替换mysql,mysql,database,Mysql,Database,我是mysql的新手,可能需要你的帮助。我有一个名为localgames的表,我正在尝试替换一些值来清理该表,因此这里是我的疑问、我尝试过的内容和建议的“解决方案”: 为了替换简单的条目,我使用了: UPDATE localgames SET Stock = REPLACE(Stock, '0 in stock', 'Sold out'); 因此,列stock中的所有0库存条目将替换为售罄。酷 但是现在我有另一个条目,例如1库存,2库存,3库存,还有100多个XX库存,我想将它们全部替
localgames
的表,我正在尝试替换一些值来清理该表,因此这里是我的疑问、我尝试过的内容和建议的“解决方案”:
为了替换简单的条目,我使用了:
UPDATE localgames
SET Stock = REPLACE(Stock, '0 in stock', 'Sold out');
因此,列stock中的所有0库存
条目将替换为售罄
。酷
但是现在我有另一个条目,例如1库存
,2库存
,3库存
,还有100多个XX库存
,我想将它们全部替换为库存
有没有一种方法可以使用类似于SET Stock=REPLACE(Stock,*.*in Stock,,'in Stock')代码>?使用万能钥匙:
请看我的SQLfiddle:
或者,也可以采用以下方法:
UPDATE inventory
SET quantity = IF(quantity = '0 in stock', 'Out of stock', 'In Stock')
SQLfiddle在此:
更新:回应您的评论,另外两种方式(如果您有REGEXP支持)
或者干脆
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:了解答案。问题是:我在库存字段中列出了其他东西,如预订单、延期订单等。不仅仅是“库存”和“售罄”。:(还有其他线索吗?Cheers@RafaelSouza只要继续使用CASE语句,就可以定义所有内容。@RafaelSouza还有,你的数据库版本是什么?Percona/Mariadb有一些额外的功能可能会有所帮助。这取决于你的数据库版本,以及你是否支持REGEXP(Percona/Mariadb有它,以及MySQL的更高版本)你可以用这个。哈哈,你用了哪一个,好奇的@RafaelSouza?这是做研究的有趣时光。
UPDATE inventory
SET quantity = IF(quantity REGEXP '^[0-9]+ in stock$', 'In Stock', quantity)
UPDATE inventory
SET quantity = IF(
CONCAT('', SUBSTR(quantity, 1, 1) * 1) = SUBSTR(quantity, 1, 1),
'In Stock',
quantity
)