Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как распарсить строку? 
:(
    Опции темы
Feller
Дата 24.5.2011, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 2.7.2010

Репутация: нет
Всего: нет



Есть столбец в нём значение  FIO=1; LASTINDIC=0; и.т.д как можно его распарсить чтоб  FIO было название столбца а то что до точки с запятой его значение.Я сделал такой запрос но он не множко нетак работает например если строки LASTINDIC=0; небудет он выдаст ошибку  пожалуйста помогите smile 
Код

SUBSTRING(pmsg, ABS((CHARINDEX ('LASTINDIC', pmsg) -CHARINDEX ('LASTINDIC', pmsg)-(CHARINDEX ('FIO', pmsg)+LEN('FIO')+1))) ,CHARINDEX ('LASTINDIC', pmsg)-(CHARINDEX ('FIO', pmsg)+LEN('FIO')+1)-2 )as FIO,
       SUBSTRING(pmsg, ABS((CHARINDEX ('LASTDATE', pmsg) -CHARINDEX ('LASTDATE', pmsg)-(CHARINDEX ('LASTINDIC', pmsg)+LEN('LASTINDIC')+1))),CHARINDEX ('LASTDATE', pmsg)-(CHARINDEX ('LASTINDIC', pmsg)+LEN('LASTINDIC')+1)-2 )as LASTINDIC,


PM MAIL   Вверх
Akina
Дата 24.5.2011, 17:38 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Описывайте задачу, а не свою попытку её решать.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Feller
Дата 24.5.2011, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 2.7.2010

Репутация: нет
Всего: нет



Akina, 
есть колонка pmsg оно содержит всебе данные DEBT_AMOUNT=-300.00; FIO=1; LASTINDIC=0; LASTDATE=19.05.2011;
как его правильно распарсить чтоб вытащить его значения ?
PM MAIL   Вверх
Akina
Дата 24.5.2011, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Парсить каждый параметр надо независимо.

Если в строке есть параметр PARAMETER, то вернуть его значение, иначе ноль (или пустую строку) или NULL.

Код

CASE 
WHEN CHARINDEX('PARAMETER=', pmsg)>0 
THEN CAST(значение AS тип) 
ELSE ноль/пустая_строка/NULL 
END as PARAMETER

Значение берётся как подстрока. 

Начало подстроки - после знака "=". Его положение = CHARINDEX('PARAMETER=', pmsg)+LEN('PARAMETER=').
Конец подстроки - первый ";" после начала. Т.е. CHARINDEX(';', pmsg, CHARINDEX('PARAMETER', pmsg))
Соответственно длина значения = Конец_подстроки - Начало_подстроки.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Feller
Дата 26.5.2011, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 2.7.2010

Репутация: нет
Всего: нет



Akina, Спасибо, smile то что надо
PM MAIL   Вверх
Akina
Дата 26.5.2011, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 25
Всего: 454



Если эта операция выполяется часто - задумайтесь о написании пользовательской функции.
Если, кроме того, ещё и критично по времени выполнения - то UDF.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0828 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.