【发布时间】:2014-01-23 03:05:16
【问题描述】:
对不起,如果我问的很明显,但我对我的 SQL 是一窍不通。
我指的是标准的wordpress DB安装,虽然这不是wordpress特定的问题,而是更多的mySQL常识..
如果我想更改所有帖子中某个字段的所有值,我通常会这样做:
UPDATE `wp_postmeta` SET `meta_value` = replace(meta_value, 'old_value', 'new_value') WHERE `meta_key` LIKE 'my_meta_key'
问题如下:
在那个特定的 DB 中,INITIAL 值插入时带有空格前缀和后缀,例如:
"city name"
实际上被插入为
" city name "
当然,作为一个 PHP 人,我立刻想到了 trim() 命令 - 我发现它存在 also in mySQL。
所以现在我认为我可以这样做
UPDATE `wp_postmeta` SET `meta_value` = TRIM('meta_value') WHERE `meta_key` LIKE 'my_meta_key'
但它不起作用..
我做错了什么?我知道 mySQL 是“敏感的”(可以这么说)但我尝试了 'meta_value' 和 `meta_value'(抱歉,markdown 限制似乎截断了反引号)
使用replace(meta_value, ' ', '') 会很累,因为一些城市的名称中有空格,而LTRIM RTRIM 对我来说也有点不合适
我也知道有一种方法可以在 sql (@my_var) 中设置变量
但在我的情况下,这样做的正确语法是什么?
SET @my_var = `meta_value`
然后
UPDATE `wp_postmeta` TRIM(@my_var) WHERE `meta_key` LIKE 'my_meta_key'
我当然知道如何在 php 循环中修复它(使用 trim() ),但我想了解在 mySQL 中最好的方法是什么..
【问题讨论】: