更新mysql表中值的一部分

时间:2014-11-03 04:07:23

标签: php mysql sql database database-table

我有一张桌子"用户"在mysql中有大约2K的记录。在表格中,有一个字段" status"。状态可以是2到3个单词。在很少的状态,最后,有一个空格,后面跟一个星号。我想删除空格和星号。请帮我查询更新值。以下是一些例子

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 users WHERE ?????? (如何写条件?)

编辑:
谢谢大家的答案。考虑到取代2000多条记录,利用计算机资源,记忆,效率等,有人可以了解哪个答案最好?

5 个答案:

答案 0 :(得分:2)

您可以使用以下语法/命令来搜索和替换*

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

这将找到带*的字符串,而不用*。

替换

希望它有所帮助。

答案 1 :(得分:1)

如何使用查询替换

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

答案 2 :(得分:1)

试试这个......

$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);
    } 
}

答案 3 :(得分:1)

尝试使用此单行查询来查找和替换状态为

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

答案 4 :(得分:0)

请运行以下查询:

更新用户 set status = RTRIM(SUBSTRING_INDEX(状态,' ',1)) 其中的状态如'%'