0

我有一个名为“variations”的自定义字段,里面有颜色(逗号分隔),如“黑色、红色、蓝色”。我需要每天通过 cron 作业将颜色替换为另一种语言。对于一个单一的颜色变化,这可以将黑色变为黑色:

UPDATE `wp_postmeta` 
SET `meta_value` = replace(meta_value, 'Black', 'Noir')
WHERE `meta_key` LIKE 'variations'

一切都很好,但我想在同一个查询中替换不止一种颜色。我不希望有 20 个类似的查询来涵盖所有 20 种可能的颜色变化。

这样的事情可能吗?

UPDATE `wp_postmeta` 
SET `meta_value` = replace(meta_value, 'Black', 'Noir'), (meta_value, 'Green', 'Vert') 
WHERE `meta_key` LIKE 'variations'   

我没有测试系统,也不想弄乱我的数据库。

4

2 回答 2

2

您可以轻松地做到这一点,使用您上次返回的 REPLACE 到一个新的 REPLACE

UPDATE `wp_postmeta` 
 SET `meta_value` = REPLACE(
                        REPLACE(
                            REPLACE(  meta_value, 
                                      'Black', 
                                      'Noir'
                            ), 
                            'Geen', 
                            'Vert'),
                        'Blue',
                        'Blu')
 WHERE `meta_key` LIKE 'variations'   
于 2013-03-02T09:54:41.207 回答
1

为了让您对UPDATE查询可能执行的操作充满信心,几乎总是有一个SELECT可以形成的,您可以看到您将使用它生成的数据。在这种情况下,您可以这样做:

SELECT meta_value, REPLACE(
                        REPLACE(  meta_value, 
                                  'Black', 
                                  'Noir'
                        ), 
                        'Geen', 
                        'Vert')
FROM wp_postmeta WHERE meta_key LIKE variations;
于 2013-03-02T10:02:19.550 回答