在mysql表中更新一个值的一部分

问题描述:

我在mysql中有一个表“用户”,大约有2K条记录。在表中,有一个字段“状态”。状态可以是2到3个字。在很少的情况下,最后还有一个空格,后面跟着星号标记。我想删除空格和星号。请帮助我查询更新值。下面是一些例子在mysql表中更新一个值的一部分

Not smiling 
always laughing * 
never jumps * 
keep it up 
oh my god * 

我想这个更改为:

Not smiling 
always laughing 
never jumps 
keep it up 
oh my god 

SELECT * FROM用户WHERE ?????? (如何写条件?)

编辑:
感谢大家的答案。有人可以阐明它的答案是最好的考虑更换2000+记录,计算机资源,内存,效率等的利用一些轻...

试试这个单行查询查找和状态与*仅更换记录

update users set status = replace(status, ' *', '') where instr(status, ' *') > 0; 

你可以使用下面的语法/命令搜索和替换*

update users set status = replace(status, ' *', '') where instr(status, ' *') > 0; 

这将找到带*的字符串,并且替换为*。

希望它有帮助。

关于如何使用查询替换

Update user 
set column = REPLACE(column, '*','') 

试试这个...

$sql='SELECT id,status FROM users WHERE status like %* %'; 

while($rs=$conn->query($sql)) 
{ 
    $newStatus = str_replace(' *',rs[1]); 
    $sqlUpdate="UPDATE users SET status =$newStatus WHERE id=rs[0]"; 

    if($conn->query($sqlUpdate) === false) { 
     trigger_error('Wrong SQL: ' . $sqlUpdate. ' Error: ' . $conn->error, E_USER_ERROR); 
    } 
} 
+0

糟糕状态! 4个答案...我很困惑哪一个尝试。谢谢 – Sabha 2014-11-03 04:48:37

请运行以下查询:

个更新用户 设置状态= RTRIM(SUBSTRING_INDEX(状态, '',1)) 其中相同的 '%'