Php SQL修剪特定字段(和变量集)中的所有值
恕我直言,我是个文盲 我指的是一个标准的wordpress DB安装,虽然这不是wordpress特有的问题,但更多的是mySQL常识 如果我想在所有帖子中更改某个字段的所有值,我通常会:Php SQL修剪特定字段(和变量集)中的所有值,php,mysql,wordpress,trim,Php,Mysql,Wordpress,Trim,恕我直言,我是个文盲 我指的是一个标准的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中,初始值插入空白前缀和后缀,例如: "
UPDATE `wp_postmeta` SET `meta_value` = replace(meta_value, 'old_value', 'new_value') WHERE `meta_key` LIKE 'my_meta_key'
问题如下:
在该特定DB中,初始值插入空白前缀和后缀,例如:
"city name"
实际上是作为
" city name "
当然,作为一个PHP爱好者,我立刻想到了trim()
命令——我发现它是存在的
所以现在我想我可以
UPDATE `wp_postmeta` SET `meta_value` = TRIM('meta_value') WHERE `meta_key` LIKE 'my_meta_key'
但是它不起作用
我做错了什么?我知道mySQL是“滴答声敏感的”(可以这么说),但我尝试了'meta\u value'
和'meta\u value'
(抱歉,降价限制似乎会截断反滴答声)
做replace(meta_值,,'')
是很无聊的,因为有些城市的名字中有空格,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中执行此操作的最佳方法。要参考本专栏,您需要反勾号:
UPDATE `wp_postmeta`
SET `meta_value` = TRIM(`meta_value`)
WHERE `meta_key` LIKE 'my_meta_key';
您的表达式
TRIM('meta_value')
正在修剪字符串'meta_value'
,而不是列中的值。您根本不需要“`是吗?@Dagon…”。事实上,你不知道。@GordonLinoff谢谢,我怀疑这是一个回溯问题,但改变它(就像原来的问题一样)似乎没有帮助。我使用的phpMyAdmin似乎正在修剪值本身,因此当我检查值时,它们没有空格。。即使在真正的原始数据库中,他们也有它。(故意或错误?)无论如何,为了安全起见,如果出现问题,是否还有pad
功能可以恢复?(我知道这不在原始问题中,但我找不到任何…)@ObmerkKronen。本质上没有“pad”,但您可以使用类似于left(concat(col,space(100)),100)
的东西做同样的事情。