SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 08.05.2012 16:54:03

sv
Участник
Зарегистрирован: 26.03.2012
Сообщений: 22

Выбор из поля необходимого значения

Есть таблица:

CREATE TABLE `sessions` (
    `session_id` VARCHAR(150) NOT NULL,
    `session_value` MEDIUMTEXT NOT NULL,
    `session_time` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE INDEX `session_id` (`session_id`),
    INDEX `index_session_id` (`session_id`)
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;


Необходимо выбрать из поля session_value значения UserID.
В поле строка следующего вида
UserID:NDU4Mg==:;UserType:VXNlcg==:;UserLastname:0JrQsNC70LjRg9GI0LrQvg==:;
Проблема в том, что значение UserID в строке может быть в любом месте.

Значит я хотел получить номер символа UserID и подставить его в SUBSTRING:

select LOCATE('UserID', session_value) from sessions
214
149
2979

select *, SUBSTRING(session_value,214,15) from sessions
UserID:NDU4Mg==

Не хватает знаний как объединить два селекта выше вместе. Думал как-то так
select *, SUBSTRING(session_value,(select LOCATE('UserID', session_value) from sessions),15) from sessions
Но не работает.

Подскажите как решить задачу.

Неактивен

 

#2 10.05.2012 12:36:33

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Выбор из поля необходимого значения

SELECT SUBSTRING(LOCATE('UserID', session_value), 15) FROM sessions

Но вообще имеет смысл разные куски этого текста хранить в разных столбцах. Иначе Вы
теряете все преимущества реляционной базы данных.

Неактивен

 

#3 10.05.2012 15:42:19

sv
Участник
Зарегистрирован: 26.03.2012
Сообщений: 22

Re: Выбор из поля необходимого значения

Спасибо за подсказку. В итоге получился такой селект:

# Общее количество сессий
select count(*) as 'count' from sessions
union all
# Уникальные сессии
select count(*) from (select SUBSTRING(session_value,LOCATE('UserID', session_value),15) from sessions group by 1) as tt

Неактивен

 

Board footer

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