Обновить часть значения в таблице MySQL

У меня есть таблица «пользователи» в MySQL с около 2K записей. В таблице есть поле «статус». Статус может быть от 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

ВЫБЕРИТЕ * ОТ пользователей, ГДЕ ?????? (Как написать условие?)

РЕДАКТИРОВАТЬ:
Спасибо всем за ответы. Может ли кто-то пролить свет на то, какой ответ лучше всего рассматривать с учетом замены 2000+ записей, использования ресурсов компьютера, памяти, эффективности и т. Д …

0

Решение

Попробуйте этот однострочный запрос, чтобы найти и заменить только записи с * в статусе

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

Другие решения

Вы можете использовать следующий синтаксис / команду для поиска и замены *

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

Это найдет строку с * и заменит без *.

Надеюсь, поможет.

2

как насчет запроса заменить

 Update user
set column = REPLACE(column, '*','')
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);
}
}
1

Пожалуйста, запустите ниже запрос:

обновить пользователей
установить статус = RTRIM (SUBSTRING_INDEX (статус, ‘‘, 1))
где статус как ‘%

0
По вопросам рекламы [email protected]