对不起,如果我问明显,但我是mySQL文盲。
我指的是一个标准的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'
(对不起,降价限制似乎会阻止反叛)
执行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中执行它的最佳方法是什么..
答案 0 :(得分:1)
要引用该列,您需要反引号:
UPDATE `wp_postmeta`
SET `meta_value` = TRIM(`meta_value`)
WHERE `meta_key` LIKE 'my_meta_key';
您的表达式TRIM('meta_value')
正在修剪字符串'meta_value'
,而不是列中的值。