Вопрос:

Как обновить столбцы в таблице для определенных строк?

mysql server

14 просмотра

1 ответ

6 Репутация автора

Я хочу обновить мои столбцы для строк, указанных командой WHERE, но я хочу обновить свое поле таким образом, чтобы оно извлекало целую часть строки из каждого указанного поля, умножало это на целое число (которое я укажу) и дать целочисленный вывод во всех этих конкретных полях, извлеченных командой WHERE в этом столбце.

Например, предположим, что я хочу обновить все мои поля в столбце, которые имеют вид (5.6 AUD / 1000, 4.5 AUD / 1000, 9.7 AUD / 1000), поэтому я хочу сначала определить поля, заканчивающиеся на '/ 1000', и обновить только эти поля в столбце путем умножения целой части строки (которая составляет 5,6, 4,5, 9,7) на любое число (скажем, 10). Я хочу, чтобы другие поля в столбце остались без изменений.

ВЫБРАТЬ * из отсортированного ГДЕ Столбец8 REGEXP '/ 1000 $'; дает мне все конкретные поля, которые я хочу обновить. Но я хочу обновить их так, как я указал выше: я хочу извлечь целую часть из строки, умножить ее на число и обновить только эти поля.

Я впервые задаю здесь вопрос, заранее прошу прощения, если мне было трудно понять, или я сделал это слишком долго. Жду ваших предложений.

Я могу извлечь все поля с условием, которое я упомянул, я сталкиваюсь с трудностями при обновлении этих полей в столбце.

ВЫБРАТЬ * из отсортированного ГДЕ Столбец8 REGEXP '/ 1000 $';

ВЫБЕРИТЕ CAST (Столбец 8 как неподписанный) * 10 ОТ отсортированного ГДЕ столбец8 REGEXP '/ 1000 $'; Приведенный выше код дает мне обязательные обновленные поля, но я хочу, чтобы они были отражены в моем столбце.

Я ожидаю, что мой вывод будет столбцом, в котором только те поля, заканчивающиеся на '/ 1000', должны быть обновлены таким образом, чтобы целая часть строки умножалась на 10.

Автор: Harjot Singh Источник Размещён: 11.08.2019 07:32

Ответы (1)


0 плюса

9214 Репутация автора

Вы могли бы использовать substring_index.

drop table if exists t;
create table t (column8 varchar(20));

insert into t values
('5.6 AUD/1000'),
('4.5 AUD/1000'),
('9.7 AUD/1000'),
('5.6 AUD/000');

SELECT t.COLUMN8,
         substring_index(column8,char(32),1) numpart,
         substring_index(column8,char(32),1) * 10 numpart10,
         substring_index(column8,'/',-1)     suffixpart,
         concat(substring_index(column8,char(32),1) * 10,char(32),substring_index(column8,char(32),-1)) rebuilt
from t
where substring_index(column8,'/',-1) = 1000;

UPDATE T
    SET COLUMN8 =    concat(substring_index(column8,char(32),1) * 10,char(32),substring_index(column8,char(32),-1))
where substring_index(column8,'/',-1) = 1000;

SELECT * FROM T;
Автор: P.Salmon Размещён: 11.08.2019 07:46
Вопросы из категории :
32x32