У меня есть таблица «пользователи» в 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+ записей, использования ресурсов компьютера, памяти, эффективности и т. Д …
Попробуйте этот однострочный запрос, чтобы найти и заменить только записи с * в статусе
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);
}
}
Пожалуйста, запустите ниже запрос:
обновить пользователей
установить статус = RTRIM (SUBSTRING_INDEX (статус, ‘‘, 1))
где статус как ‘%‘