SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.08.2012 19:22:40

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Замена чисел в тексте

Подскажите, пожалуйста, как можно средствами MySQL заменить числа в текстовой строке
есть строки (например) -
1-3
2-5
25-30

нужно к каждому, чтобы каждое число увеличить на 1, т.е., чтобы стало
2-4
3-6
26-31
Я пытался с помощью регулярных выражений, но ввиду того, что я вообще не разбираюсь ни в них, ни в mysql, ничего не выходит.

Это вообще возможно ? ))

Неактивен

 

#2 10.08.2012 20:35:40

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Замена чисел в тексте

С помощью строковых функций http://dev.mysql.com/doc/refman/5.5/en/ … tions.html
например, определяете позицию дефиса и вырезаете числа, затем их увеличиваете и склеиваете назад в строку.

Но лучше пересмотреть архитектуру базы, например, хранить эти числа в отдельных колонках.

Неактивен

 

#3 10.08.2012 22:28:26

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Re: Замена чисел в тексте

Спасибо за помощь! Vasya, а можешь пример написать, если не сложно.
И вопрос в догонку, в этой колонке все значения такого типа - 1-5,  25-30, каким образом их разнести в 2 колонки ?
Если можно пример.

P.S. Уж простите нуба )

Отредактированно Mauop (10.08.2012 22:29:21)

Неактивен

 

#4 10.08.2012 22:41:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Замена чисел в тексте

create table test (a varchar(255));
insert into test values('1-5'),('25-30');
alter table test add col1 tinyint, add col2 tinyint;
update test set col1=substring(a,1,locate('-',a)-1), col2=substring(a,locate('-',a)+1);
MariaDB [test]> select * from test;
+-------+------+------+
| a     | col1 | col2 |
+-------+------+------+
| 1-5   |    1 |    5 |
| 25-30 |   25 |   30 |
+-------+------+------+
2 rows in set (0.00 sec)

Неактивен

 

#5 11.08.2012 03:13:14

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Re: Замена чисел в тексте

Vasya, спасибо тебе большее!! Ты мне так помог!!!wink

Неактивен

 

#6 12.08.2012 19:19:23

Mauop
Участник
Зарегистрирован: 10.08.2012
Сообщений: 11

Re: Замена чисел в тексте

Vasya, подскажи пожалуйста как мне значения полей col1 и col2 запихнуть в другое текстовое поле, чтобы получилось также как было в исходном - 25-30 ?
Я пытался сделать так:

alter table test add b char(10);
UPDATE `test` set b=cast(col1 as char (2))+'-'+cast(col2 as char (2));

получаю сумму col1 и col2...
пол дня уже мучаюсь
что я делаю не так ?

Отредактированно Mauop (12.08.2012 19:22:04)

Неактивен

 

#7 12.08.2012 20:36:12

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Замена чисел в тексте

А Вы не + используйте, А concat какой-нибудь (функцию для склейки строк).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson