Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
批量更新/替换mysql_Mysql_Database - Fatal编程技术网

批量更新/替换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库存,我想将它们全部替

我是mysql的新手,可能需要你的帮助。我有一个名为
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
)