SQL TRIM特定字段(和变量集)中的所有值

时间:2014-01-23 03:05:16

标签: php mysql wordpress trim

对不起,如果我问明显,但我是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中执行它的最佳方法是什么..

1 个答案:

答案 0 :(得分:1)

要引用该列,您需要反引号:

UPDATE `wp_postmeta`
    SET `meta_value` = TRIM(`meta_value`)
    WHERE `meta_key` LIKE 'my_meta_key';

您的表达式TRIM('meta_value')正在修剪字符串'meta_value',而不是列中的值。