在SQL db中的同一自定义字段中替换多个字符串值

时间:2013-03-02 09:51:58

标签: mysql wordpress

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

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'   

我没有测试系统,我不想搞砸我的数据库。

2 个答案:

答案 0 :(得分: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'   

答案 1 :(得分:1)

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

SELECT meta_value, REPLACE(
                        REPLACE(  meta_value, 
                                  'Black', 
                                  'Noir'
                        ), 
                        'Geen', 
                        'Vert')
FROM wp_postmeta WHERE meta_key LIKE variations;