Mysql sql从字段中删除点和逗号

Mysql sql从字段中删除点和逗号,mysql,sql,Mysql,Sql,在mysql中,我可以列出我的meta\u key、simple\u fields、fieldGroupID、6、fieldID、10、numInSet、0的所有meta\u值 这是一个用户高度列表,如1.67、168等 我想去掉数字上的点…有时我有1.79,我想要179。。。我该怎么做 我试过了 UPDATE pm_postmeta SET meta_value = REPLACE(REPLACE(meta_value,',00',''),'.','') WHERE meta_key='_si

在mysql中,我可以列出我的meta\u key、simple\u fields、fieldGroupID、6、fieldID、10、numInSet、0的所有meta\u值

这是一个用户高度列表,如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';

但它删除了表行,我需要再次导入…

如果meta_值是整数,则将meta_值列更新为字符串

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';

如果meta_值为整数,则将meta_值列更新为字符串

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.78存储到整数数据类型中

因此,假设原始表包含以下内容:

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       

事实上,每种方法都取决于用于存储人的身高的数据类型

你说它们是数字,我假设它们存储在数字列中,你不能将1.78存储到整数数据类型中

因此,假设原始表包含以下内容:

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       
我不确定你的replace是否正确,但你的UPDATE语句的WHERE条件是错误的。您使用的是=而不是LIKE。使用LIKE

我不确定你的replace是否正确,但你的UPDATE语句的WHERE条件是错误的。您使用的是=而不是LIKE。使用LIKE


它们实际上是数字还是表示数字的字符?您需要只显示它而不带点,还是也在数据库中更新它?选择Replacemeta_值'。,作为meta_值,您也可以在SELECT语句中替换它,如果只需要替换点进行查看。我想更新我的数据库。。。它们是像1.76这样的数字,我希望是176UPDATE pm_Posteta SET meta_value=REPLACEmeta_value',',,其中meta_key=''u simple_fields_fieldGroupID_6_fieldID_10_numInSet_0';它不起作用吗?它们实际上是数字还是代表数字的字符?你需要只显示它而不带点,还是在数据库中也更新它?选择Replacemeta_值'。,作为meta_值,如果只需要在视图中替换点,你也可以在SELECT语句中替换它。我想更新我的数据库。。。它们是像1.76这样的数字,我希望是176UPDATE pm_Posteta SET meta_value=REPLACEmeta_value',',,其中meta_key=''u simple_fields_fieldGroupID_6_fieldID_10_numInSet_0';它不起作用吗?如果我这样列出:从pm_postmeta中选择*meta_键,如“%\u simple_fields\u fieldGroupID\u 6\u fieldID\u 10\u numInSet_0%”我得到所有的值…一些仍然带有点或逗号,如1.73或1,78。如果我这样列出,我想要173和178:从pm_postmeta中选择*meta_键,如“%\u simple\u fields\u fieldGroupID\u 6\u fieldID\u 10\u numInSet\u 0%”我得到了所有的值…有些值仍然带有点或逗号,比如1.73或1,78,我想要173和178