_simple_fields_fieldGroupID_6_fieldID_10_numInSet_0
的所有meta_values
select * from pm_postmeta where meta_key LIKE '%_simple_fields_fieldGroupID_6_fieldID_10_numInSet_0%'
其用户高度列表,如1.67,168等
我想删除数字上的点...有时候我有1.79而我想要179 ...我怎么能这样做?
我试过
UPDATE pm_postmeta
SET meta_value = REPLACE(REPLACE(meta_value,',00',''),'.','')
WHERE meta_key='_simple_fields_fieldGroupID_6_fieldID_10_numInSet_0';
但它删除了表格行,我需要再次导入...
答案 0 :(得分:1)
如果meta_value是整数,则将meta_value列更新为字符串
ALTER TABLE pm_postmeta ALTER COLUMN meta_value varchar(50);
UPDATE pm_postmeta SET meta_value = REPLACE(REPLACE(meta_value,',00',''),'.','')
WHERE meta_key='_simple_fields_fieldGroupID_6_fieldID_10_numInSet_0';
答案 1 :(得分:1)
SELECT p.*,REPLACE(REPLACE(p.`meta_value`, '00', ''),'.', '') AS meta_value
FROM `pm_postmeta` p
WHERE p.`meta_key`='_simple_fields_fieldGroupID_6_fieldID_10_numInSet_0';
答案 2 :(得分:1)
实际上每个都取决于您用来存储人员高度的数据类型。
你说“它们是数字”并且我认为它们存储在NUMERIC列中(你不能将1.78存储到INTEGER数据类型中)。
因此,假设您的原始表包含以下内容:
SQL> select * from people ;
id| height
----------+--------
1| 180.00
2| 1.78
3| 165.00
4| 2.01
你基本上想要用一个小数部分更新这个表乘以100所有高度:
SQL> update people set height = height * 100 where mod(height, 1) > 0 ;
SQL> select * from people ;
id| height
----------+--------
1| 180.00
2| 178.00
3| 165.00
4| 201.00
修改强>
好的,您现在说要更改的值包含 逗号或点,因此...列是CHAR / VARCHAR。像这样:
SQL> select * from people2;
id|height
----------+----------
1|180
2|1.78
3|165
4|2,01
在这种情况下,我会使用:
SQL> update people2 set height = replace(replace(height,'.',''),',','') where height regexp '.*[,.].*';
SQL> select * from people2;
id|height
----------+----------
1|180
2|178
3|165
4|201
答案 3 :(得分:1)
我不确定您的REPLACE(REPLACE
是否正确,但您的UPDATE
声明的WHERE
条件是错误的。您使用=
代替LIKE
。使用LIKE
。
UPDATE pm_postmeta
SET meta_value = REPLACE(REPLACE(meta_value,',00',''),'.','')
WHERE meta_key LIKE '%_simple_fields_fieldGroupID_6_fieldID_10_numInSet_0%';